P1403 [AHOI2005]约数研究

Posted jindui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1403 [AHOI2005]约数研究相关的知识,希望对你有一定的参考价值。

这个题很有意思啊,

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int ans[1000003],n,maxn;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=sqrt(i);j++){
			if(i%j==0)	ans[i]+=2;
			if(j==i/j&&i%j==0)	ans[i]--;
		}
	}
	for(int i=1;i<=n;i++)
		maxn+=ans[i];
	printf("%d",maxn);
	return 0;
}

 暴力打了一个稍稍加了个技巧得了60.

正解的话,暴力还有一种搞法,把每个数当因子把它的倍数加一。

由这个也可以推出一个式子,每个数在1到n的贡献为n/i个。

 

第一种

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int ans[1000003],n,maxn;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j+=i){
            ans[j]++;
        }
    }
    for(int i=1;i<=n;i++)
        maxn+=ans[i];
    printf("%d",maxn);    
    return 0;
}

 

第二种

#include<iostream>
using namespace std;
int n,ans;
int main(void){
    cin>>n;
    for(int i=1;i<=n;i++)ans+=n/i;
    cout<<ans;
}

 

以上是关于P1403 [AHOI2005]约数研究的主要内容,如果未能解决你的问题,请参考以下文章

洛谷——P1403 [AHOI2005]约数研究

洛谷 P1403 [AHOI2005]约数研究

P1403 [AHOI2005]约数研究

P1403 [AHOI2005]约数研究

BZOJ 1968: [Ahoi2005]COMMON 约数研究

1968: [Ahoi2005]COMMON 约数研究