pku1365 整数分解
2010-07-13 14:19
190 查看
http://acm.pku.edu.cn/JudgeOnline/problem?id=1365
题意:很难理解,就是给出连续的两个数pi,ei,pi表示一个素数,ei表示pi的次幂,s就是这些素数幂的积,例如s=pi^ei(i=1,2,3...)。要求你先算出s,然后再把s-1分解成输入的形式。
分析:每一行的输入pi,ei没有规定是多少项,这就很难处理算出每一行的s的值,但是通过此题也学会了一种处理这中情况的表达,在文章的最后会贴下别人的处理代码;接下来就是简单的整数分解了。
下面是处理的情况:
题意:很难理解,就是给出连续的两个数pi,ei,pi表示一个素数,ei表示pi的次幂,s就是这些素数幂的积,例如s=pi^ei(i=1,2,3...)。要求你先算出s,然后再把s-1分解成输入的形式。
分析:每一行的输入pi,ei没有规定是多少项,这就很难处理算出每一行的s的值,但是通过此题也学会了一种处理这中情况的表达,在文章的最后会贴下别人的处理代码;接下来就是简单的整数分解了。
#include<iostream> #include<cmath> using namespace std; __int64 k; int res[100][2]; void init() { int pi, ei; k = 1; while(1) { while((!isdigit(cin.peek())) && cin.peek() != '/n') //如果不是数字和换行,'/n'不能忽略 cin.ignore(); //忽略其他非法字符 if(cin.peek() == '/n') //如果是换行,退出去处理第i行的情况; break; scanf("%d%d",π,&ei); k *= pow(pi*1.0, ei); } } int fun() //把k-1分解成幂的形式。 { int i,n,sum=0; n = k = k-1; //printf("%d/n",k); for(i=2; i<=n; i++) { if(k==1) break; if(k % i == 0) { sum++; res[sum][1] = i; //存放因子 res[sum][0] = 0; //存放次幂 while(k % i == 0) { res[sum][0]++; //次幂++ k /= i; } } } return sum; //返回因子总数。 } int main() { int sum; while(1) { while(!isdigit(cin.peek())) //如果不是数字,则忽略其他非法字符 cin.ignore(); if(cin.peek() == '0') //如果是0,则结束。 return 0; init(); memset(res,0,sizeof(res)); sum = fun(); for(int i=sum; i>=1; i--) { if(i==1) printf("%d %d/n",res[i][1],res[i][0]); else printf("%d %d ",res[i][1],res[i][0]); } //printf("/n"); } return 0; }
下面是处理的情况:
#include <iostream> #include <cctype> using namespace std; int main() { int num, n=0; //num存储输入的数字,n用来统计每行数字个数 while(cin.peek()!=EOF) { if(isdigit(cin.peek())) //是数字则读入,计数加一 { cin> > num; ++n; } if(cin.peek()== '/n ') //是 '/n '计数清零 { cout < < "此行数字个数为 " < <n < <endl; n=0; } cin.ignore(); //忽略其他非法字符 } return 0; }
相关文章推荐
- pku1365 Prime Land 小整数素数分解,基础题
- 整数的素数分解 POJ 1365
- POJ 1365 小整数分解
- [水+整数分解] poj 1365 Prime Land
- POJ 1365 Prime Land 整数分解
- 整数分解和划分 - 兼 ACM PKU POJ 1221 解题报告
- pku1730 (整数分解素数+GCD,求幂pow)
- pku1811 pku2429 (大素数判断,整数分解)
- POJ - 1365 Prime Land (整数分解+筛素数)
- Java - 判断一个整数是否为水仙花数(循环分解,立方相加)
- 整数分解
- 整数的素数和分解
- (Relax 水题1.2)POJ 1032 Parliament(将n分解成若干个互不相等的整数的和,并且是这些整数的乘积最大)
- JAVA变成把一个整数分解成多个质数的积
- 整数分解成不同加数的最大乘积
- C++实现的大整数分解Pollard's rho算法程序
- 5-37 整数分解为若干项之和 (20分)
- 整数N分解,搭积木,离散数学中的母函数,ZOJ(1163)
- 整数分解 和 java
- 小代码 分解正整数