swun 1429&hdu 4320 进制转化(大牛&小牛代码)
2012-08-04 09:46
381 查看
描述
最近小胖对小数的进制转换非常感兴趣。
并且研究了整整一周。
小胖发现,有些进制的小数是无法完全转化成另一进制的小数。
比如 十进制的0.1 转化成 三进制 。
现在,小胖要来考验你们了。
输入
第一行输入一个整数T,代表有T组测试数据。(T<=20)
对于每组测试数据,有两个整数A、B。(1<A,B<=10^12)
输出
对于每组测试数据,输出样式请参照样例输出。
如果A进制的小数能够完全转化成B进制的小数,请输出"YES",否则输出"NO"。
样例输入
3
5 5
2 3
1000 2000
样例输出
Case #1: YES
Case #2: NO
Case #3: YES
//题目描述来自swun。和hdu约有不同,但结果一样!!
***************************************************************************************************************************************************************************************
swun题目链接:http://218.194.91.48/acmhome/problemdetail.do?&method=showdetail&id=1429
hdu题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4320
比赛时五分钟被CYY大牛秒掉,之后五个小时没人搞出来,囧~~此小胖真的搞死苊们了!赛后听ZFQ学姐讲解才AC了!
题目要求A进制的小数能够完全转换成B进制的小数,小数后边会出现A的-1次方,-2次方(转换为十进制)…B也是同样!当A的所有因数都在B中存在,即能够约分把A的因数全部约掉,这样A进制就能完全转换为B进制了!(PS:其实前面没有太懂,只是后面听见ZFQ学姐说A中因数在B中完全存在才AC的!如果ZFQ学姐看见此页面,求补充!!)
代码:
感觉像暴力,时间长了点。
下面献上大牛diannaok的代码,
博客链接:http://blog.csdn.net/diannaok/article/details/7815545
- -!!这代码, 膜拜膜拜!!
最近小胖对小数的进制转换非常感兴趣。
并且研究了整整一周。
小胖发现,有些进制的小数是无法完全转化成另一进制的小数。
比如 十进制的0.1 转化成 三进制 。
现在,小胖要来考验你们了。
输入
第一行输入一个整数T,代表有T组测试数据。(T<=20)
对于每组测试数据,有两个整数A、B。(1<A,B<=10^12)
输出
对于每组测试数据,输出样式请参照样例输出。
如果A进制的小数能够完全转化成B进制的小数,请输出"YES",否则输出"NO"。
样例输入
3
5 5
2 3
1000 2000
样例输出
Case #1: YES
Case #2: NO
Case #3: YES
//题目描述来自swun。和hdu约有不同,但结果一样!!
***************************************************************************************************************************************************************************************
swun题目链接:http://218.194.91.48/acmhome/problemdetail.do?&method=showdetail&id=1429
hdu题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4320
比赛时五分钟被CYY大牛秒掉,之后五个小时没人搞出来,囧~~此小胖真的搞死苊们了!赛后听ZFQ学姐讲解才AC了!
题目要求A进制的小数能够完全转换成B进制的小数,小数后边会出现A的-1次方,-2次方(转换为十进制)…B也是同样!当A的所有因数都在B中存在,即能够约分把A的因数全部约掉,这样A进制就能完全转换为B进制了!(PS:其实前面没有太懂,只是后面听见ZFQ学姐说A中因数在B中完全存在才AC的!如果ZFQ学姐看见此页面,求补充!!)
代码:
#include<cstdio> #include<cstring> #define Maxn 3300 #define Inf 999999 typedef __int64 LL; LL ay[Maxn];//A的因子 LL by[Maxn];//B的因子 LL prime[Maxn];//素数 LL val[30010];//3W内的素数 LL Init(){//预处理 :素数筛选法 LL i,j,tot=0; for(i=2;i<=30000;i++){ if(val[i]) continue; prime[tot++]=i; for(j=i+i;j<=30000;j+=i) val[j]=1; } return tot; } int main(){ LL t,a,b,i,j,s; LL k=Init(),cnta,cntb; scanf("%I64d",&t); for(s=1;s<=t;s++){ scanf("%I64d%I64d",&a,&b); cnta=cntb=0; for(i=0;i<k&&(a>prime[i]||b>prime[i]);i++){//此循环是找出a和b的因数 if(!(a%prime[i])&&a>prime[i]){ ay[cnta++]=prime[i]; while(!(a%prime[i])) a/=prime[i]; } if(!(b%prime[i])&&b>prime[i]){ by[cntb++]=prime[i]; while(!(b%prime[i])) b/=prime[i]; } } if(a>1) ay[cnta++]=a;//如果a是大素数的时候不为1(没有因数) if(b>1) by[cntb++]=b; bool flag;//节约时间所用 for(i=0;i<cnta;i++){ flag=true; for(j=0;j<cntb;j++){ if(ay[i]==by[j]){ flag=false; break; } } if(flag) break; } printf("Case #%I64d: ",s); if(i==cnta) puts("YES"); else puts("NO"); } return 0; }
感觉像暴力,时间长了点。
下面献上大牛diannaok的代码,
博客链接:http://blog.csdn.net/diannaok/article/details/7815545
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<queue> using namespace std; long long a,b,c; long long gcd(long long x,long long y){ if(y==0) return x; return gcd(y,x%y); } int main(){ int t,tt; cin>>t; for(tt=1;tt<=t;tt++){ cin>>a>>b; cout<<"Case #"<<tt<<": "; c=gcd(a,b); while(c>1){ a/=c; c=gcd(a,b); } if(a==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
- -!!这代码, 膜拜膜拜!!
相关文章推荐
- HDU 4320 - Arcane Numbers 1 / SWUN 1429 - 进制转化
- hdu 4320 Arcane Numbers 1(小数进制转化后是否有限位)
- POJ 3652 & ZOJ 2934 & HDU 2721 Persistent Bits(数学 进制)
- 进制转化之递归 && 栈
- 【hdu 2896】病毒侵袭 题解&代码(C++)
- 【问题】:进制转化算法(迭代版&递归版)
- HDU 2106 decimal system (进制转化求和)
- hdu 5237 2015上海邀请赛 B - Base64 (进制转化,模拟)
- HDU 1429--胜利大逃亡(续)【BFS && 状态压缩】
- 进制转化(10-&gt;2)
- FZU 2102 Solve equation(水,进制转化)&& FZU 2111(贪心,交换使数字最小)
- <编程珠玑>3.4 日期问题 && 杭电hdu acm 2133题目代码
- 十进制转化为m进制(m<=16)
- HDU 2031 进制转化
- hdu 2051 Bitset 把一个十进制转化为2进制数
- HDU 4278 Faulty Odometer 转化进制
- 公共语言运行时&字节码本地代码转化思考
- 【hdu 5635】LCP Array 中文题意&题解&代码(C++)
- lightOJ 1354 - IP Checking 【字符串处理&&进制转化】
- HDU 2031 进制转化