题目描述

p.p1 { margin: 0; font: 11px Monaco; color: rgba(78, 144, 114, 1) }

   幼儿园有10个小朋友,把1 – 20中所有奇数数字的卡片分别发给这20(应为10)个小朋友。 集合的时候小朋友们排成一排,组成一个由数字组成的字符串,如35971315….11917,但是老师发现少了一个小朋友,你能帮忙找出少掉的那个小朋友吗

 

注意:题目描述原文有问题,官网给的测试用例也是错误的,估计有不少同学被误导了。

 

p.p1 { margin: 0; font: 11px Monaco; color: rgba(78, 144, 114, 1) }

 

思路

    20以内的奇数 1 3 5 7 9  11 13 15 17 19

 

    其中10以上的数字,十位数与个位数之和刚好依次为

        11:1 + 1 =  2

        13:1 + 3 =  4

        15:1 + 5 =  6

        17:1 + 7 =  8

        19:1 + 9 = 10

   刚好为 2  4  6  8  10

 

    也即 135791113151719依次相加 = 从1到10累加求和为 55

 

 给定了字符串,将其每一位代表的十进制数求和sum,用55减去这个值,对55-sum的奇偶性稍作判断便知

 

代码

 

 

 1 #define N 32
 2 
 3 int search(const char *p) {
 4     int sum = 0;
 5     int idx = 0;
 6     int diff = 0;
 7     if (!p) {
 8         return -1;
 9     }
10     while (p[idx]) {
11         sum += p[idx++] - \'0\';
12     }
13     diff = 55 - sum;
14     return diff % 2 ? diff : diff + 9;
15 }
16 
17 int main(void) {
18     char str[N];
19     scanf("%s", str);
20     printf("%d\n", search(str));
21     return 0;
22 }

 

 

 

 

版权声明:本文为dengshijun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dengshijun/articles/7360117.html