到底有多二(15 分)
2018-03-22 10:46
169 查看
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字
做题一定要静下心来,仔细思考,做这题时太着急,错了好多次都没过,引以为戒!!
这题用字符串比较好
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main ()
{
string s;
cin>>s;
int num=0,l,i=0;
double ans,f1=1,f2=1; //这里注意f1,f2要设成double型,因为后面f1=1.5;
l=s.length();
if (s[0]=='-') {i++;f1=1.5;} //如果是负数,从a[1]开始遍历
for (;i<l;i++)
if (s[i]=='2') num++;
if ((s[l-1]-'0')%2==0) f2=2.0;
if (s[0]=='-') l--; //如果是负数,长度减一,第一次我和上面的判断写一起了,导致a[l-1]不能遍历
ans=1.0*num/l*f1*f2*100;
cout.precision (2);
cout<<fixed<<ans<<"%"<<endl;
return 0;
}
-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3,约为81.82%。本题就请你计算一个给定整数到底有多二。
输入格式:
输入第一行给出一个不超过50位的整数N。
输出格式:
在一行中输出N犯二的程度,保留小数点后两位。
输入样例:
-13142223336
输出样例:
81.82%
做题一定要静下心来,仔细思考,做这题时太着急,错了好多次都没过,引以为戒!!
这题用字符串比较好
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main ()
{
string s;
cin>>s;
int num=0,l,i=0;
double ans,f1=1,f2=1; //这里注意f1,f2要设成double型,因为后面f1=1.5;
l=s.length();
if (s[0]=='-') {i++;f1=1.5;} //如果是负数,从a[1]开始遍历
for (;i<l;i++)
if (s[i]=='2') num++;
if ((s[l-1]-'0')%2==0) f2=2.0;
if (s[0]=='-') l--; //如果是负数,长度减一,第一次我和上面的判断写一起了,导致a[l-1]不能遍历
ans=1.0*num/l*f1*f2*100;
cout.precision (2);
cout<<fixed<<ans<<"%"<<endl;
return 0;
}
相关文章推荐
- Java 阶段面试 知识点合集 - 我们到底能走多远系列(15)
- setTimeout(fn, 15)这样的东西到底有没有意义?
- 7-1 到底有多二(15 分)
- 【Java面试题】15 String s="Hello"; s=s+“world!”;这两行代码执行后,原始的String对象中的内容到底变了没有?String与StringBuffer的超详细讲解!!!!!
- #ifndef到底什么意思?
- SQL Server 2008/2005 数据类型-varchar(MAX)、nvarchar(MAX) 到底有多大?
- 1066. 图像过滤(15)
- 揭秘!月薪30K的大牛到底看了哪些视频?【共2000G】
- 1016. 部分A+B (15)
- 03-3. 12-24小时制(15)
- Java-1001. 害死人不偿命的(3n+1)猜想 (15)
- 123456789=15
- Jquery 对 身份证号码的验证 (15/18位)
- VS2013或15 MVC提示“当前上下文中不存在ViewBag”的解决方案
- 【TINY4412】U-BOOT移植笔记:(15)DFU更新固件
- Java并发15:并发三特性-有序性定义、有序性问题与有序性保证技术
- 静态和非静态成员,函数之间到底区别在哪里
- 架构漫谈(六):软件架构到底是要解决什么问题?
- 骂人的到底是些什么人
- 嵌入式培训学校到底在干吗?