首页 > 代码库 > hdu1215
hdu1215
七夕节 |
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) |
Total Submission(s): 3742 Accepted Submission(s): 1328 |
Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" 人们纷纷来到告示前,都想知道谁才是自己的另一半.告示如下: 数字N的因子就是所有比N小又能被N整除的所有正整数,如12的因子有1,2,3,4,6. 你想知道你的另一半吗? |
Input 输入数据的第一行是一个数字T(1<=T<=500000),它表明测试数据的组数.然后是T组测试数据,每组测试数据只有一个数字N(1<=N<=500000). |
Output 对于每组测试数据,请输出一个代表输入数据N的另一半的编号. |
Sample Input 321020 |
Sample Output 1822 |
1 /* 2 1.筛选法*/ 3 #include<iostream> 4 #include<cmath> 5 using namespace std; 6 7 int main() 8 { 9 int t,n,i,sum,j,m;10 cin>>t;11 while(t--)12 {13 sum=1;14 cin>>n;15 m=(int)sqrt( double ( n ) );16 17 for(i=2;i<=m;i++)18 if(n%i==0)19 {20 sum +=i;21 j=n/i;22 if(i!=j)23 sum +=j;24 }25 cout<<sum<<endl;26 }27 return 0;28 }29 30 /*这个方法我是网上学的,但不知道为什么提交不了31 32 //打表法33 #include<iostream>34 #define M 50000135 using namespace std;36 37 int a[M];38 int main()39 {40 int i,j,n,t;41 42 for(i=1;i<=500000;i++)43 for(j=i+i;j<=250001;j +=i)44 a[j] +=i;45 //while(scanf("%d",&t)!=EOF)46 scanf("%d",&t);47 48 while(t--)49 {50 cin>>n;51 cout<<a[n]<<endl;52 }53 54 return 0;55 }56 */
这个题用一般的方法会超时,学到新的东西是
m=(int)sqrt( double ( n ) );(将double类型的数转换为int型)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。