判斷一個整數是否能被11整除
阿新 • • 發佈:2018-12-20
如果一個整數在整型範圍內,直接用求餘符號就能搞定,但是如果這個整數比較大就要另尋他路了。 有一種演算法叫做“奇偶位差法”,意思就是在奇數位上的數字和與偶數位上的數字和做差,如果這個差的絕對值能被11整除,那麼這個數字就可以被11整除。
#include<stdio.h> #include<math.h> #include<string.h> int main() { int i,len,sum1,sum2; char s[10000010]; while(scanf("%s",s) != EOF) { sum1 = sum2 = 0; len = strlen(s); for(i = 0; i < len; i ++) { if(i % 2 == 0) sum1 += (s[i]-'0'); else sum2 += (s[i]-'0'); } if(abs(sum1-sum2) % 11 == 0) printf("Yes\n"); else printf("No\n"); } return 0; }
或者用另一種方法
#include<stdio.h> #include<string.h> char s[10000010]; int main() { int i,len,ans; while(scanf("%s",s) != EOF) { ans = 0; len = strlen(s); for(i = 0; i < len; i ++) ans = (ans*10 + (s[i]-'0')) % 11; if(ans == 0) printf("Yes\n"); else printf("No\n"); } return 0; }