HDU 1215 七夕节 数学题~

2014-11-24 08:11:17 · 作者: · 浏览: 0

题目大意:

找对象的题。。。汗。。将你的编号(唯一)的所有因子加起来,所得到的的另一个编号的主人就是你的另一半。给出你的编号,要求找到你的对象的编号。

一开始直接模拟TLE。

然后后来看到别人是这么做的:

#include
  
   
#include
   
     int main() { int T; scanf(%d,&T); while(T--) { int n; scanf(%d,&n); int cur=2; int ans=1; for(int i=2;(i>>1)<=n;i++) //将问题规模减半 { if(n%i==0) { if(n/i > i) //如果把不等于i,那么说明i和n/i都是因子 ans+=n/i+i; else if(n/i==i) //等于i就一个因子 ans+=i; else //如果n/i
    
      后来采用类似筛选素数的方法,打表。
     

我们先将2的倍数的都+上2.。。3的倍数都加上3、。。。。

要注意的是如果n==1的时候答案为0.

#include
      
       
const int MAXN=500000+1;
const int N=250000;
int ans[MAXN]={0};
int main()
{	
	for(int i=2;i