[L1-017]到底有多二 | PAT GPLT团体程序设计天梯赛

Description

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

Input

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

Output

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

Sample Input

-13142223336

Sample Output

81.82%

Hint

因为是计算百分比,所以要在小数结果后乘上100。
使用 %% 来输出 %

题解

#include "cstdio"
#include "cstdlib"
#include "cstring"
#include "cmath"
int main()
{
    char arr[52];
    gets(arr);
    float count = 0;
    int len = strlen(arr);
    for (int i = 0; i < len; i++)
        if (arr[i] == '2')
            count++;
    float res = count / (arr[0] == '-' ? (len-1)/1.5 : len) * ((arr[len-1]-'0') % 2 == 0 ? 2 : 1);  
    printf("%.2f%%\n", res*100);
    return 0;
}

CC BY-SA 4.0 [L1-017]到底有多二 | PAT GPLT团体程序设计天梯赛 by 小小泥娃 is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.