[2018大华软件创新挑战赛]模拟赛第三题

题目 输入 输出 限制 示例

有一种特殊的正整数(int类型),将数分为两侧,每侧至少有一位数,两侧的每个数字相加相等,请写出判断的方法用来检测是否这种数。


比如:1236,可以拆分为123和6。

输入的第一行指定用例数量T;
用例的第二行输入正整数;

输出是否为特殊的正整数  

bool is_magicnum(int number)

intput:
2
1232145
4543622

output:
1
1

【实现代码】:

 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 }
View Code

【代码效果】:

猜你喜欢

转载自www.cnblogs.com/usingnamespace-caoliu/p/8975237.html
今日推荐