首页 > 代码库 > NYOJ 647 奋斗的小蜗牛在请客
NYOJ 647 奋斗的小蜗牛在请客
奋斗小蜗牛在请客
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
一路艰辛一路收获,成功爬过金字塔的小蜗牛别提多高兴了。这不为了向曾经帮助他的哥们们表达谢意,蜗牛宴请这些亲朋好友。
席间,蜗牛发现老鹰一直愁眉不展。就关切的问下老鹰。老鹰说:“近来,有一道题我一直没解决,很是郁闷”。蜗牛说:“说说看,看能不能帮你解决掉,老朋友”。老鹰说:“给一个数,用二进制表达,如果这个数转化为二进制后小数位超过20位,那么只要前二十位,其余的不要”,小蜗牛现在很忙,没时间帮助老鹰。
亲爱的兄弟姐妹们,不知道你能否帮忙解决问题。来试下,加油!!!
- 输入
- 多组测试数据,
每组输入一个数N(不超double) - 输出
- 输出对应的二进制(如果小数部分前20全部为0,则将小数部分视为0,不输出小数部分,不输出多余部分比如:(不输出1.00100000000000000000而输出1.001)
- 样例输入
1 1.5 0.000001 0.000000999
- 样例输出
1 1.1 0.00000000000000000001 0.00000000000000000001
题不难,思绪却很乱!
AC码:
#include<stdio.h> int main() { double n; int i,count,num[25],m; while(~scanf("%lf",&n)) { m=((int)n); // 把整数部分转化为二进制 count=0; do { num[count]=m%2; m=m/2; count++; }while(m!=0); for(i=count-1;i>=0;i--) printf("%d",num[i]); // 把整数部分转化为二进制结束 count=0; // 把小数部分转化为二进制 for(i=0;i<25;i++) num[i]=0; n=n-((int)n); while(count<20&&n!=0) { n=n*2; if(n>=1) { num[count]=1; n=n-((int)n); } else num[count]=0; count++; } count--; while(count>=0&&num[count]==0) count--; if(count>=0) printf("."); for(i=0;i<=count;i++) printf("%d",num[i]); printf("\n"); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。