设为首页 加入收藏

TOP

HDU 2522 A simple problem
2015-07-20 17:19:36 来源: 作者: 【 】 浏览:3
Tags:HDU 2522 simple problem

A simple problem

Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3368 Accepted Submission(s): 1249


Problem Description Zty很痴迷数学问题.。一天,yifenfei出了个数学题想难倒他,让他回答1 / n。但Zty却回答不了^_^. 请大家 编程帮助他.

Input 第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).
Output 输出1/n. (是循环小数的,只输出第一个循环节).
Sample Input
4
2
3
7
168

Sample Output
0.5
0.3
0.142857
0.005952380

Author yifenfei
Source HDU 2008-10 Programming Contest

模拟除法的运算。

上代码

#include 
  
   
#include 
   
     #include 
    
      using namespace std; int main() { int a[100005],t; //a数组是用来判断循环小数的。 scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); int n; int flag=0; scanf("%d",&n); if(n==1) { printf("1\n"); //n为一就是一 continue; } if(n<0) { n=-n; //小于0的话,先变正,做个标记 flag=1; } int l=1; a[l]=1; if(flag) printf("-0."); //输出符号 else printf("0."); while(l) //l除不尽时,即不为0 { l*=10; //开始模拟,先乘10 printf("%d",l/n); //输出第一位小数 l%=n; //取余,不断重复以上操作 if(a[l]) break; a[l]=l; //让a[l]=l ,出现相同的循环时,a[l]为真直接跳出了。保证只有一个循环节。 } printf("\n"); } return 0; }
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇(hdu step 3.2.3)Super Jumping! .. 下一篇Introduction to configuration w..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)