Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 4934 | Accepted: 2074 |
Description
Input
Output
Sample Input
1 2 6 1 3 1 1 1 1 1
Sample Output
9
Source
题意:
求十个数的乘积的因子个数;
解题思路:把十个数的结果进行因式分解得:s=a1^p1*a2^p2*...
则在0到p1内取任意个a1,0到p2内取任意个a2,所以最后的约数个数为:(p1+1)*(p2+1)*...%10
1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<cstring> 6 #include<algorithm> 7 #include<cmath> 8 #include<map> 9 #define maxn 10007 10 11 using namespace std; 12 int num[11]; 13 int ans[maxn]; 14 bool prime[maxn]; 15 void slove(int value) 16 { 17 for(int i=2;i*i<=value;i++) 18 { 19 while(value%i==0){ 20 ans[i]++; 21 value=value/i; 22 } 23 } 24 if(value!=1) ans[value]+=1; 25 } 26 int main() 27 { 28 // freopen("in.txt","r",stdin); 29 memset(ans,0,sizeof(ans)); 30 for(int i=0;i<10;i++) scanf("%d",&num[i]); 31 for(int i=0;i<10;i++) slove(num[i]); 32 long long res=1; 33 for(int i=2;i<maxn;i++) 34 res*=(ans[i]+1),res=res%10; 35 res=res%10; 36 printf("%lld\n",res); 37 return 0; 38 }
原文:http://www.cnblogs.com/codeyuan/p/4328485.html