hdu acmsteps 2.1

2.1.1  最小公倍数   

搜索一下就可以过,不过我貌似悲剧的WA一次

2.1.2  How many primenumbers

简单的判定一下就好

bool isprime(int a)

{

intm=(int)sqrt(a);

for(inti=2;i<=m;i++)

if(a%i==0)returnfalse;

return true;

}

2.1.3  Cake

详见另一日志(转别人的):http://blog.csdn.net/ouxijv/article/details/6665779

2.1.4  Largest prime factor

这个题挺巧妙的。首先用数组存储每一个数字最大的素数编号。然后从2开始判断,如果一个数是素数,那么它之后的所有它的倍数都赋予当前的编号值。这样扫描一遍之后数组中存储的就是其对应的最大的素数编号。

for(int i=2;i<=M;i++)

{

if(a[i]!=0)continue;

elseif(isprime(i))

{

for(intj=1;j*i<=M;j++)

a[j*i]=order;

order++;

}

 

}

2.1.5  又见GCD

小小的搜索一下就可以了

for(i=2,c=b*i;gcd(a,c)!=b;i++)

c=b*i;

2.1.6    七夕节

其实思想和2.1.4是一样的,只不过把编号,换成叠加

for(i=1;i<=M/2;i++)

for(j=2;j*i<=M;j++)

a[j*i]+=i;

2.1.7  找新朋友

和前面一样也是找到一个约数之后将其倍数都标记,这样能减少时间。直接搜应该也可以吧(只是感觉)。

for(i=2;i<n;i++)

if(a[i]==0&&n%i==0)

for(j=i;j<n;j+=i)

a[j]=1;

for(i=1;i<n;i++)

if(a[i]==0)ans++;

2.1.8 The Area

数学题。自己算吧。实在不会算。百度之吧。。。。。


最后我想说csdn的在线编辑  真心垃圾的一逼。。。无语。。还不让用离线编辑。。。想逼我挪窝?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值