PTA 到底有多二

一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3,约为81.82%。本题就请你计算一个给定整数到底有多二。

输入格式:

输入第一行给出一个不超过50位的整数N

输出格式:

在一行中输出N犯二的程度,保留小数点后两位。

输入样例:

-13142223336

输出样例:

81.82%
 
 1 #include<stdio.h>
 2 int main()
 3 {
 4   char str[51];
 5   int i,count_2=0,t,m=0;
 6   double a=1.0;
 7   for(i=0;;i++){
 8       scanf("%c",&str[i]);
 9       if(str[i]=='\n'){
10           t=i;
11           break;
12     }
13   }
14   if(str[0]=='-'){
15       a=1.5;
16       m=1;
17   }
18   if(str[i-1]%2==0){
19       a*=2;
20   }
21   if(str[0]=='-') t-=1;
22   for(i=m;i<=t;i++){
23       if(str[i]=='2'){
24           count_2++;
25       }
26   }
27   //printf("%lf ",a); 
28   printf("%.2f%%",count_2*1.0/t*1.0*a*100);
29   return 0;
30 }

 

posted @ 2021-03-30 18:05  弈星  阅读(269)  评论(0)    收藏  举报