小辉辉130

来源:互联网 发布:linux重启就打不开了 编辑:程序博客网 时间:2024/04/28 00:36

智商(IQ)是智力商数的简称,指的是一种表示人的智力高低的数量指标。智商是智力年龄被生理年龄相除而得出的商数。智商表示人的聪明程度,智商越高,表示越聪明。智商在140以上的人通常被成为天才或近于天才,120-140为智力优异,110-120的人智力较高,90-110为普通智力,80-90 迟钝偶为低能,而70-80 介乎迟钝与低能之间(也可归入低能),70以下便确定为低能。以下是一张全球各地区平均IQ分布表:

在一次偶然的谈话中,小辉辉同学表示自己的智商高达130,这让大家大为惊叹,于是大家决定出一道题来考考他。给他一个字符串,让他数数这里面一共有多少“130”,并计算这个字符串的得分。具体规则如下:(以130143090为例)

任取三个字符,顺序与其在字符串中的顺序一致,如果它们依次是“1”、“3”、“0”,则:

如果它们连续,得52分 130143090

如果他们仅有两个数连在一起,得19分 130143090130143090130143090、130143090

如果3个数均不连续,仅得1分130143090、130143090 所以对于这个字符串,一共有7个“130”,得分为52+4*19+2*1 = 130分。

Input

输入包含多组数据(组数不超过20,以EOF结束),每组数据一行,保证每个字符串的长度不超过200且仅由数字组成。

Output

对应于输入文件的每一行,先输出“Xiao Huihui:”(不含引号),然后输出一个空格和一个整数n。表示该串的得分。

Sample Input

130143090

Sample Output

Xiao Huihui: 130

解题思路:

        本题是简单的查找,我选择的是暴力查找,方法好想,但容易超时,结果还是AC了。

代码如下:

#include<stdio.h>#include<string.h>int main(){    int i,j,k,n,sum;    char a[220];    while(scanf("%s",a)!=EOF)    {        sum=0;        n=strlen(a);        for(i=0;i<n;i++)//遍历数组找到数字‘1’,并逐个遍历        {if(a[i]=='1'){for(j=i+1;j<n;j++)//遍历数组找到数字‘3’,并逐个遍历{if(a[j]=='3'){for(k=j+1;k<n;k++)//遍历数组找到数字‘0’,并逐个遍历{if(a[k]=='0'){if(j==i+1&&k==j+1)sum+=52;if((j==i+1&&k>j+1)||(j>i+1&&k==j+1))sum+=19;if(j>i+1&&k>j+1)sum+=1;}}}}}        }printf("Xiao Huihui: %d\n",sum);    }    return 0;}


0 0
原创粉丝点击