#include <stdio.h> #include <stdlib.h> int main() { unsigned long long int k,a,b; unsigned long long int qua = 0; scanf("%llu %llu %llu", &k, &a, &b); //k = 51; a = 5000; b = 10000; //k = 1; a = 1; b = 1000000000000000000; //k = 1000000000000000000; a = 1; b = 1000000000000000000; //k = 51; a = 5000; b = 10000; unsigned long long int n, n_temp, sum, dig; if(k > 1) { a = a - (a % k) + k; } //for(n = (a-a%k+k); n <= b && n <= k * 81 * (log10(n) + 1); n+=k) for(n = a; n <= b && n <= k * 81 * (log10(n) + 1); n += k) { n_temp = n; sum = 0; while(n_temp && (k * sum <= n)) //while(n_temp) { dig = n_temp % 10; sum += (dig * dig); n_temp /= 10; } //printf("%llu \t %llu\n", n, sum); if( n % sum == 0 ) { //printf("%llu \t %llu \t %llu \n", n, sum, n/sum); } if( k * sum == n ) { qua += 1; //printf("%llu \t %llu\n", n, sum); } } printf("%llu", qua); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <stdio.h> #include <stdlib.h> int main() { unsigned long long int k,a,b; unsigned long long int qua = 0; scanf("%llu %llu %llu", &k, &a, &b); //k = 51; a = 5000; b = 10000; //k = 1; a = 1; b = 1000000000000000000; //k = 1000000000000000000; a = 1; b = 1000000000000000000; //k = 51; a = 5000; b = 10000; unsigned long long int n, n_temp, sum, dig; if(k > 1) { a = a - (a % k) + k; } //for(n = (a-a%k+k); n <= b && n <= k * 81 * (log10(n) + 1); n+=k) for(n = a; n <= b && n <= k * 81 * (log10(n) + 1); n += k) { n_temp = n; sum = 0; while(n_temp && (k * sum <= n)) //while(n_temp) { dig = n_temp % 10; sum += (dig * dig); n_temp /= 10; } //printf("%llu \t %llu\n", n, sum); if( n % sum == 0 ) { //printf("%llu \t %llu \t %llu \n", n, sum, n/sum); } if( k * sum == n ) { qua += 1; //printf("%llu \t %llu\n", n, sum); } } printf("%llu", qua); return 0; } |