整数因子分解问题 SDUT
来源:互联网 发布:js 嵌入java代码 编辑:程序博客网 时间:2024/04/29 16:09
整数因子分解问题
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
大于1 的正整数n可以分解为:n=x1*x2*…*xm。
例如,当n=12 时,共有8 种不同的分解式:
12=12;
12=6*2;
12=4*3;
12=3*4;
12=3*2*2;
12=2*6;
12=2*3*2;
12=2*2*3。
对于给定的正整数n,计算n共有多少种不同的分解式。
例如,当n=12 时,共有8 种不同的分解式:
12=12;
12=6*2;
12=4*3;
12=3*4;
12=3*2*2;
12=2*6;
12=2*3*2;
12=2*2*3。
对于给定的正整数n,计算n共有多少种不同的分解式。
输入
输入数据只有一行,有1 个正整数n,n≤1200000000。
输出
将计算出的不同的分解式数输出。
示例输入
12
示例输出
8
数据范围不言而喻,递归囧对超时。
因为当n=12时, 值之所以为8就是他的因子的作用。故对因子分析。
一般的,较大数为某个更大数的因子,比这个较大数小的因子也可能是这个较大数的因子,如果是那么这个数的所有因子也是较大因子的因子(比较绕),
所以再枚举比当前因子小的因子,那么就dp[j]+=dp[i],
//#include<bits/stdc++.h>//using namespace std;//int s,a[1000000],dp[1000000];//void f(int n)///当数据较小时为1200000000就不行了//{// for(int i=1;i*i<=n;i++)// if(n%i==0)// {// a[s++]=i;// a[s++]=n/i;// }//}//void solve()//{// int i,j;// dp[0]=1;// for(i=1;i<s;i++)// {// dp[i]=0;// for(j=0;j<i;j++)// {// if(a[i]%a[j]==0)// {// dp[i]+=dp[j];// }// }// }//}//int main()//{// int n;// ios::sync_with_stdio(false);// while(cin>>n!=NULL)// {// s=0;// f(n);// sort(a,a+s);// solve();// cout<<dp[s-1]<<endl;// }// return 0;//}#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int permutation[1<<20],s,ans;int dp[1<<20];void f(int n){ for(int i=1;i*i<=n;i++) { if( !(n%i) ) { int p=n/i; if(n/i!=i) { permutation[s++]=n/i; permutation[s++]=i; } else permutation[s++]=n/i; } }}void solo(int s){ memset(dp,0,sizeof(dp)); dp[0]=1; for(int i=1;i<s;i++) { for(int j=0;j<i;j++) { if(permutation[i]%permutation[j]==0) { dp[i]+=dp[j]; } } }}int main(){ int n,i; ios::sync_with_stdio(false); while(cin>>n) { s=0;ans=0; f(n); sort(permutation,permutation+s); solo(s); cout<<dp[s-1]<<endl; } return 0;}
0 0
- 整数因子分解问题 SDUT
- SDUT 1722-整数因子分解问题(因子分解)
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 整数因子分解问题
- 函数inet_addr和inet_aton
- USB3.0接口
- [UnityUI]简易的小地图制作
- [Leetcode]Lowest Common Ancestor of a Binary Tree
- SQL Server 2008 问题——已成功与服务器建立连接,但是在登录过程中发生错误。
- 整数因子分解问题 SDUT
- 知识储备:Java面试知识储备
- 菜鸟教程之工具使用(十九)——国际化资源文件开发凶器MultiProperties
- refresh的停车场 SDUT 2088
- 2015-7-30英语------Reference
- 8种经典算法之选择排序
- 404处理-提高用户体验
- 顺序二维数组的查找
- JAVA 使用正则表达式删除HTML标签