Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

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
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.