码迷,mamicode.com
首页 > 其他好文 > 详细

判断1/N是否为无限小数

时间:2019-10-22 01:16:01      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:name   mod   思路   while   小数   写法   string   long   ios   

 

给定一个正整数N,请判断1/N是否为无限小数,若是输出YES,若不是请输出NO。

 

思路:

只要被除数n可以转换成2的次幂或者2与5的组合即为有限小数,否则为无线小数

 

代码如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <stack>
 9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <sstream>
13 const int INF=0x3f3f3f3f;
14 typedef long long LL;
15 const int mod=1e9+7;
16 //const double PI=acos(-1);
17 #define Bug cout<<"---------------------"<<endl
18 const int maxn=5e5+10;
19 using namespace std;
20 
21 int judge(int n)
22 {
23     while(n)
24     {
25         if(n%2==0||n==1)
26         {
27             n/=2;
28         }
29         else
30             break;
31     }
32     while(n)
33     {
34         if(n%5==0||n==1)
35         {
36             n/=5;
37         }
38         else
39             break;
40     }
41     if(n==0)
42         return 1;
43     else
44         return 0;
45 }
46 
47 int main()
48 {
49     int n;
50     scanf("%d",&n);
51     if(judge(n))
52         printf("NO\n");
53     else
54         printf("YES\n");
55     return 0;
56 }

 

 递归写法:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <stack>
 9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <sstream>
13 const int INF=0x3f3f3f3f;
14 typedef long long LL;
15 const int mod=1e9+7;
16 //const double PI=acos(-1);
17 #define Bug cout<<"---------------------"<<endl
18 const int maxn=5e5+10;
19 using namespace std;
20 
21 int Solve(int n)
22 {
23     if(n==1)
24         return 1;
25     else if(n%2==0)
26         return Solve(n/2);
27     else if(n%5==0)
28         return Solve(n/5);
29     else
30         return 0;
31 }
32 
33 int main()
34 {
35     int n;
36     scanf("%d",&n);
37     if(Solve(n))
38         printf("NO\n");
39     else
40         printf("YES\n");
41     return 0;
42 }

 

判断1/N是否为无限小数

标签:name   mod   思路   while   小数   写法   string   long   ios   

原文地址:https://www.cnblogs.com/jiamian/p/11717107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!