团体程序设计天梯赛 L1-017 到底有多二

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;
}

发布了123 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Fiveneves/article/details/104726610