Problem Link
Solution :
As there is no information about input number, the number can have 100 digits. So, I used string to take input. Then finding digit some will be done simply for all bases 2 <= b <= 10. After that finding modulus of a big number is the issue.
I have used the idea that,
- ( a + b) % M = (a % M + b%M) % M
- ( a * b) % M = (a % M * b%M) % M
#include <stdio.h> /*Submit Time: 2009-11-04 06:28:23 Language: GNU C++ Result: Accepted Pid: 1156 Time: 0.00 sec. Memory: 720 K. Code Length: 0.5 K. */ int main(){ long B,i,j,k,l,sum,num; char N[101],ch; while( scanf("%ld",&B) && B){ scanf("%s",N); sum=0; for( i=0; N[i]; i++){ sum += N[i]-'0'; } num=0; for( i=0; N[i]; i++){ num *= B; num %= sum; num += N[i]-'0'; num %= sum; } if( num%sum == 0) printf("yes\n"); else printf("no\n"); } return 0; }
No comments:
Post a Comment