#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
string s;
cin >> s;
int flag = (s[0] == '-' ? 1 : 0);
int len = s.length();
int bit = len - flag;
int count = 0;
for(int i = 0; i<len; i++)
{
if(s[i] == '2')
count ++;
}
double ans = (double)count / bit * 100;
if(flag==1)
ans = ans * 1.5;
if((s[len-1]-'0') % 2 == 0)
ans = ans * 2;
printf("%.2f%%",ans);
return 0;
}
将输入的数字定义成字符串,方便判断。先判断正负号,做出标记,然后通过length()函数得出字符串的长度,为遍历判断做准备。通过标记可以得出数字真正的位数和是否增加倍数。通过遍历判断2的个数。最后还要注意类型的转化。