Бодолт илгээх | Бүх бодолтууд | Шилдэг бодолтууд | Жагсаалт руу буцах |
RGB7584 - Дараалал |
n-ээс m хүртэлх натурал тоонуудыг залгуулан бичив. Жишээ нь n=98, m=102 бол 9899100101102 болно. Энэ тооны цифрүүдийг буурахаар эрэмбэлэн бичээд эхнээсээ к дугаарт байгаа цифрийг ол.
Input
n (0<n<109) , m (0<m<109,m>n) k (0<k<109) тоонууд байна.
Output
Хариу гарна. Боломжгүй бол-1 гэж хэвлэнэ.
Example
Input 0:
98 102 4
Output 0:
8
Input 1:
9999 9999 5
Output 1:
-1
Нэмсэн: | Bataa |
Огноо: | 2013-02-06 |
Хугацааны хязгаарлалт: | 1s |
Эх кодын хэмжээний хязгаарлалт: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Програмчлалын хэлүүд: | ADA95 ASM32 BASH BF C NCSHARP CSHARP C++ 4.3.2 CPP C99 CLPS LISP sbcl LISP clisp D ERL FORTRAN HASK ICON ICK JAVA JS-RHINO JULIA LUA NEM NICE OCAML PAS-GPC PAS-FPC PERL PHP PIKE PRLG-swi PYTHON PYPY3 PYTHON3 RUBY SCALA SCM guile ST TCL WHITESPACE |
hide comments
|
|||||
2024-11-29 06:43:34
#include<bits/stdc++.h> using namespace std; #define ll long long ll n,m,k,urtn,urtm,t,x,y; ll a[10]={0},b[10]={0},s[10]={0},p[10]={0}; long long Solve(ll q){ ll ans=0; while(q>0){ ans++; q/=10; } return ans; } void Stepn(){ t=9; for(ll i=1;i<urtn;i++){ a[0]+=i*t; t*=10; } a[0]=a[0]+(n-p[urtn]+1)*urtn; while(urtn>0){ x=n/p[urtn]; y=n%p[urtn]; if(x>0){ a[x]+=y+s[urtn]*x+1; for(ll i=1;i<x;i++) a[i]=a[i]+s[urtn]*x+p[urtn]; for(ll i=x+1;i<10;i++) a[i]+=s[urtn]*x; } urtn--; n=y; } for(ll i=1;i<10;i++) a[0]-=a[i]; } void Stepm(){ t=9; for(ll i=1;i<urtm;i++){ b[0]+=i*t; t*=10; } b[0]=b[0]+(m-p[urtm]+1)*urtm; while(urtm>0){ x=m/p[urtm]; y=m%p[urtm]; if(x>0){ b[x]+=y+s[urtm]*x+1; for(ll i=1;i<x;i++) b[i]=b[i]+s[urtm]*x+p[urtm]; for(ll i=x+1;i<10;i++) b[i]+=s[urtm]*x; } urtm--; m=y; } for(ll i=1;i<10;i++) b[0]-=b[i]; } main(){ // freopen("a.in","r",stdin); // freopen("a.out","w",stdout); cin>>n>>m>>k; //printf("%lld %lld %lld\n",n,m,k); n--; urtn=Solve(n); urtm=Solve(m); //printf("%lld %lld\n",urtn,urtm); t=1; s[2]=1; p[1]=1; p[2]=10; for(ll i=3;i<10;i++){ s[i]=(s[i-1]+t)*10; t*=10; p[i]=t*10; } Stepn(); Stepm(); for(ll i=0;i<10;i++) b[i]-=a[i]; for(ll i=9;i>=0;i--){ if(b[i]>=k){ k=0; printf("%lld\n",i); break; } else k-=b[i]; } if(k > 0) printf("-1\n"); } // uilstuguldur |
|||||
2024-11-21 10:51:10
u |
|||||
2024-09-15 08:37:51
#include <iostream> using namespace std; void countDigits(long long m, long long digitCountar[10]) { for (int i = 0; i < 10; ++i) { digitCountar[i] = 0; } long long factor = 1; while (factor <= m) { long long lowerNumbers = m - (m / factor) * factor; long long currentDigit = (m / factor) % 10; long long higherNumbers = m / (factor * 10); for (int digit = 0; digit < 10; ++digit) { if (digit < currentDigit) { digitCountar[digit] += (higherNumbers + 1) * factor; } else if (digit == currentDigit) { digitCountar[digit] += (higherNumbers * factor) + (lowerNumbers + 1); } else { digitCountar[digit] += higherNumbers * factor; } } digitCountar[0] -= factor; factor *= 10; } } void countDigitsus(int n, long long digitCount[10]) { countDigits(n - 1, digitCount); } int main() { long long n, m, k; cin >> n >> m >> k; long long sum = 0; long long d[10]; long long digitCountar[10]; long long digitCount[10]; countDigitsus(n, digitCount); countDigits(m, digitCountar); for (int i = 0; i < 10; ++i) { d[i] = digitCountar[i] - digitCount[i]; } for (int i = 0;i < 10; i++) { sum = sum + d[i]; } if (sum < k) { cout << " -1 " << endl; return 0; } else { if( d[9] >= k) { cout << 9 << endl; return 0; } if( d[9] + d[8] >= k) { cout << 8 << endl; return 0; } if( d[9] + d[8] + d[7] >= k) { cout << 7 << endl; return 0; } if( d[9] + d[8] + d[7] + d[6] >= k) { cout << 6 << endl; return 0; } if( d[9] + d[8] + d[7] + d[6] + d[5] >= k) { cout << 5 << endl; return 0; } if( d[9] + d[8] + d[7] + d[6] + d[5] + d[4] >= k) { cout << 4 << endl; return 0; } if( d[9] + d[8] + d[7] + d[6] + d[5] + d[4] + d[3] >= k) { cout << 3 << endl; return 0; } if( d[9] + d[8] + d[7] + d[6] + d[5] + d[4] + d[3] + d[2] >= k) { cout << 2 << endl; return 0; } if( d[9] + d[8] + d[7] + d[6] + d[5] + d[4] + d[3] + d[2] + d[1] >= k) { cout << 1 << endl; return 0; } if( sum >= k) { cout << 0 << endl; return 0; } } return 0; } Last edit: 2024-09-17 13:10:51 |
|||||
2024-09-02 09:46:24
hi |
|||||
2024-05-16 11:46:44
Бодолт илгээх Миний бодолтууд Бүх бодолтууд Шилдэг бодолтууд PDF Жагсаалт руу буцах RGB7584 - Дараалал n-ээс m хүртэлх натурал тоонуудыг залгуулан бичив. Жишээ нь n=98, m=102 бол 9899100101102 болно. Энэ тооны цифрүүдийг буурахаар эрэмбэлэн бичээд эхнээсээ к дугаарт байгаа цифрийг ол. Input n (0<n<109) , m (0<m<109,m>n) k (0<k<109) тоонууд байна. Output Хариу гарна. Боломжгүй бол-1 гэж хэвлэнэ. Example Input 0: 98 102 4 Output 0: 8 Input 1: 9999 9999 5 Output 1: -1 |
|||||
2024-01-12 09:39:15
Last edit: 2024-02-04 10:23:36 |
|||||
2024-01-11 04:31:52
g g |
|||||
2023-10-30 09:17:59
1 Last edit: 2023-10-30 09:23:46 |
|||||
2022-12-23 01:30:55
#include <bits/stdc++.h> using namespace std; int main() { int n,m,k,a[1000],b[1000], f=0; cin >> n >> m >> k; for( int i = n; i <= m; i++) for ( int o = i; o > 0; o = o / 10, f++) a[f] = o % 10; for( int i=0 ; i < f; i++) for( int j = i ; j < f; j++) if(a[i] < a[j]) swap(a[i], a[j]); cout << (k <= f ? a[k - 1] : -1); return 0; } huul2 suga fudu |
|||||
2022-03-31 03:02:03
#include<bits/stdc++.h> using namespace std; int main(){ unsigned long long h=1,b,j; long long n,m,k,a,g=1,l; cin>>n>>m>>k; a=n; b=0; long long c[m+1-n],f[m+1-n]; for(int i=1;i<=m+1-n;i++){ c[i]=a; f[i]=a; a++; while(c[i]>0){ c[i]=c[i]/10; b++; } } l=-1; if(b<k){ cout<<l; } else{ unsigned long long e[b],d[b]; for(int i=1;i<=m+1-n;i++){ while(f[i]>0){ d[h]=f[i]%10; f[i]=f[i]/10; h++; } } sort(d+1,d+b+1); reverse(d+1,d+b+1); cout<<d[k]; } return 0; } mai lalruuda |