题目 | 输入 | 输出 | 限制 | 示例 |
有一种特殊的正整数(int类型),将数分为两侧,每侧至少有一位数,两侧的每个数字相加相等,请写出判断的方法用来检测是否这种数。
|
输入的第一行指定用例数量T; |
输出是否为特殊的正整数 | bool is_magicnum(int number) intput: output: |
【实现代码】:
1 #include <stdio.h> 2 #include <stdbool.h> 3 4 bool is_magicnum(int number) 5 { 6 char arr[10] = {}; 7 int j = 0; 8 int sumi = 0; 9 int sumj = 0; 10 11 while(number) 12 { 13 arr[j++] = number%10; 14 number /= 10; 15 } 16 j--; 17 18 for(int i=0; i<=j; ) 19 { 20 if(sumi >= sumj) 21 { 22 sumj += arr[j--]; 23 } 24 else if(sumi < sumj) 25 { 26 sumi += arr[i++]; 27 } 28 } 29 if(sumi == sumj) 30 { 31 return true; 32 } 33 else 34 { 35 return false; 36 } 37 } 38 39 int main() 40 { 41 int T; 42 scanf("%d",&T); 43 int num[T]; 44 for(int i=0; i < T; i++) 45 { 46 scanf("%d",&num[i]); 47 } 48 for(int i=0; i < T; i++) 49 { 50 printf("%d\n",is_magicnum(num[i])); 51 } 52 }
【代码效果】: