URAL 1355
2013-08-10 23:26
393 查看
题目大意:找出K个从ai到bi(i=1,2,3,...,K)最长的一条路,输出路长,路上的元素满足:前一个整除后一个。
例如:input: output:
3 4(2,4,8,16)
2 16 5(3,9,27,81,243)
3 243 6(3,9,27,81,243,486)
3 486
Time Limit:1000MS Memory
Limit:65536KB 64bit IO Format:%I64d
& %I64u
数据规模:0<=K<=20,1<=a,b<=10^9。
理论基础:无。
题目分析:明显的贪心算法,每个问题具有最优子结构,每次选最小的可以整除它的数使每个结构的子结构的b最大,即可保证父结构为最优解。原问题在保证有因子a的情形下,父结构的b每次除以b的最小因子以后剩下的子结构的最优解+1即为原题目的解。比如:1(它自己)+beer(486)=1+beer(486/3=162(保证含有a=3))=2+beer(162/2=81)=6(由测例二可知当b=81时结构的最优解为4)。所以:当b%a==0时,ans=2+beer(b/a)。
当b%a!=0时,输出0。
代码如下:
这次不加其中了。。。哈哈。。。
by:Jsun_moon http://blog.csdn.net/jsun_moon
例如:input: output:
3 4(2,4,8,16)
2 16 5(3,9,27,81,243)
3 243 6(3,9,27,81,243,486)
3 486
Time Limit:1000MS Memory
Limit:65536KB 64bit IO Format:%I64d
& %I64u
数据规模:0<=K<=20,1<=a,b<=10^9。
理论基础:无。
题目分析:明显的贪心算法,每个问题具有最优子结构,每次选最小的可以整除它的数使每个结构的子结构的b最大,即可保证父结构为最优解。原问题在保证有因子a的情形下,父结构的b每次除以b的最小因子以后剩下的子结构的最优解+1即为原题目的解。比如:1(它自己)+beer(486)=1+beer(486/3=162(保证含有a=3))=2+beer(162/2=81)=6(由测例二可知当b=81时结构的最优解为4)。所以:当b%a==0时,ans=2+beer(b/a)。
当b%a!=0时,输出0。
代码如下:
#include<iostream> #include<cstdio> using namespace std; int beer(int x) { for(int i=2;i*i<=x;i++) { if(x%i==0)return 1+beer(x/i); } return 0; } int main() { int a,b,T,ans; scanf("%d",&T); while(T--) { ans=0; scanf("%d%d",&a,&b); if(a>=b) { printf("%d\n",a==b); continue; } if(b%a==0) { ans=2+beer(b/a); } printf("%d\n",ans); } return 0; }
这次不加其中了。。。哈哈。。。
by:Jsun_moon http://blog.csdn.net/jsun_moon
相关文章推荐
- ural 1355
- ural 1355. Bald Spot Revisited(数的素因子划分)
- URAL 1355. Bald Spot Revisited(数论)
- ural 1355. Bald Spot Revisited
- Ural 1355. Bald Spot Revisited 质因数分解
- PKU1733 URAL1003 Parity game
- SuperSocket 信息: (SpnRegister) : Error 1355。解决方法
- 最长回文子串(ural1297)
- Ural 1029
- ural 1022 Genealogical Tree
- ural 1049 Brave Balloonists
- URAL 1013. K-based Numbers. Version 3
- ural 1119. Metro
- Ural 1001 Reverse Root 解题报告
- URAL 1209 110100100010000……
- 【BFS】ural 1837
- ural 1297 Palindrome
- hdu 1695 GCD 容斥原理 ural 1091
- Ural_1052. Rabbit Hunt
- Ural_1100. Final Standings(stable_sort)