L1-017 到底有多二
题目链接-L1-017 到底有多二
解题思路
- for循环遍历记录整数中有几个2
- 判断该整数是否为负数,如果为负数,除了程度增加0.5倍要×1.5外,该数字的位数应该是
s.length()-1
,不能把负号( - )算到位数中 - 再判断这个数是否为偶数,即判断最后一位数是不是偶数即可,如果是偶数就再增加一倍,即×2
- 记得定义变量时要用double或float,否则运算时会出错
printf()
输出百分号(%)用两个%即可,即printf("%%");
- 具体操作见代码
附上代码
#include<bits/stdc++.h>
#define lowbit(x) (x &(-x))
using namespace std;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
const double eps=1e-10;
const int M=1e9+7;
const int N=1e5+5;
typedef long long ll;
typedef pair<int,int> PII;
string s;
int main(){
cin>>s;
double sum=0,cnt=0,len=s.length();
for(int i=0;i<len;i++){
if(s[i]=='2')
cnt++;
}
s[0]=='-'? sum=cnt/(len-1)*1.5:sum=cnt/len;
s[len-1]%2==1? printf("%.2lf%%",sum*100):printf("%.2lf%%",sum*200);
return 0;
}