hdu 2964 Prime Bases
来源:互联网 发布:linux cp 目录 编辑:程序博客网 时间:2024/05/16 19:16
思路:只需要9个素数,然后将连乘的部分预处理,从最大的一个连乘数开始,用n去除,倍数就是这个连乘数前面的那个数,余数继续后面的计算
代码:
#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <map>#include <set>#include <vector>#include <stack>#include <queue>#include <algorithm>using namespace std;#define mst(a,b) memset(a,b,sizeof(a))#define eps 10e-8const int MAX_ = 10010;const int N = 10010;const int INF = 0x7fffffff;const int M = 1000000000;int prime[MAX_];long long a[MAX_];int b[MAX_];int n, ok, flag;int PrimeTable(int prime[]) { //打印素数表 int pNum=0; prime[pNum++]=2; for(int i=3; i<=N; i+=2) { //奇偶法 bool flag=true; for(int j=0; prime[j]*prime[j]<=i; j++) //根号法+递归法 if(!(i%prime[j])) { flag=false; break; } if(flag) prime[pNum++]=i; } return pNum;}int main() { int T, cnt, p1,p2, mini, num = 1; long long tmp =1; cnt = PrimeTable(prime); a[0] = 1; for(int i = 0; i <= 9; ++i){ tmp *= prime[i]; a[num++] = tmp; //if(tmp > M)break; } while(cin>>n,n) { ok = 0; printf("%d = ", n); cnt = 0; //memset() for(int i = 9; i > -1; --i){ b[i] = n/a[i]; n %= a[i]; if(b[i]) ++cnt; } for(int i = 0; i <= 9; ++i){ if(b[i]){ printf("%d",b[i]); for(int j = 0; j < i; ++j){ printf("*%d",prime[j]); } --cnt; if(cnt)printf(" + "); } } printf("\n"); } return 0;}
0 0
- HDU 2964 Prime Bases
- hdu 2964 Prime Bases
- hdu 2964 Prime Bases
- hdu 2964 Prime Bases
- HDU 2964 Prime Bases 数论
- hdu 2964 Prime Bases 数论~~
- hdu 2964 Prime Bases (数学:算不上太水)
- HDU 2964 Prime Bases(数论)
- HDU 2964 Prime Bases [Ad Hoc]
- Prime Bases
- Prime Bases
- hdu2964-Prime Bases
- UVALive 4225 Prime Bases 贪心
- 杭电 “Prime Bases ”解题报告
- UVALive 4225 Prime Bases(math)
- hdu Prime
- hdu 1102(prime 算法)
- HDU 1319 Prime Cuts
- OCP-1Z0-051-V9.02-16题
- Hulu面试题解答——N位数去除K个数字(解法错误sorry)
- Linux Shell中删除和替换文件中某一行的方法
- OCP-1Z0-051-V9.02-17题
- 随笔录2014.5.17
- hdu 2964 Prime Bases
- OCP-1Z0-051-V9.02-18题
- Flex Tree应用总结(一)—数据源配置+选择事件
- 黑马程序员-Java基础知识9(部分笔记总结字符流)
- ubuntu安装mysql
- youwuku和koudaitong以及weimeng的区别
- 《计算机程序的构造与解释》(三)
- OCP-1Z0-051-V9.02-19题
- 解决Android SDK Manager 无法更新下载的办法