7-1 到底有多二(15 分)
2018-03-16 20:23
344 查看
题目链接
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。
输入格式:
输入第一行给出一个不超过50位的整数N。
输出格式:
在一行中输出N犯二的程度,保留小数点后两位。
输入样例:
-13142223336
输出样例:
81.82%
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。
输入格式:
输入第一行给出一个不超过50位的整数N。
输出格式:
在一行中输出N犯二的程度,保留小数点后两位。
输入样例:
-13142223336
输出样例:
81.82%
#include<algorithm> #include<iostream> #include<vector> using namespace std; int main(){ vector <int> arr; string s; cin>>s; int i; s[0] == '-' ? i = 1 : i = 0; for(;i < s.length();i++) arr.push_back(s[i]-'0'); int cnt = count(arr.begin(),arr.end(),2); if(s[0] == '-'){ if(arr[arr.size()-1] % 2 == 0) printf("%.2lf%%\n",((double)cnt)/arr.size()*1.5*2*100); else printf("%.2lf%%\n",((double)cnt)/arr.size()*1.5*100); } else{ if(arr[arr.size()-1] % 2 == 0) printf("%.2lf%%\n",((double)cnt)/arr.size()*2*100); else printf("%.2lf%%\n",((double)cnt)/arr.size()*100); } return 0; }
相关文章推荐
- 到底有多二(15 分)
- Java 阶段面试 知识点合集 - 我们到底能走多远系列(15)
- setTimeout(fn, 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】
- 信管——苦命的专业,到底是“技术”,还是“管理”?
- 1006. 换个格式输出整数 (15)
- 123456789=15
- Jquery 对 身份证号码的验证 (15/18位)
- VS2013或15 MVC提示“当前上下文中不存在ViewBag”的解决方案
- 【TINY4412】U-BOOT移植笔记:(15)DFU更新固件
- cocos2d-x学习日志(15) --公告栏的实现(文字左右移动)
- Qt 常用类(15)—— QCheckBox
- 骂人的到底是些什么人
- 嵌入式培训学校到底在干吗?
- Android学习笔记进阶15之Shader渲染
- 【广告】揭秘!月薪30K的大牛到底看了哪些视频?【共2000G】