T287328 求和(正经题目)(有数据) 题解
题目
30分 暴力:
#include<bits/stdc++.h>
#define for1(i,a,b) for(int i=a;i<=b;i++)
#define ll long long
using namespace std;
ll gcd(ll a,ll b)
{
if(b==0) return a;
return gcd(b,a%b);
}
ll n,k,ans;
int main()
{
// freopen("data3.in","r",stdin);
// freopen("data3.out","w",stdout);
cin>>n>>k;
for1(i,1,n)
{
ans+=gcd(i,k);
}
cout<<ans<<endl;
return 0;
}
80 分 找到k的每个因子,然后容斥计算一下:
#include<bits/stdc++.h>
#define for1(i,a,b) for(ll i=a;i<=b;i++)
#define ll long long
using namespace std;
ll n,k,cnt;
ll jl[500005],ans;
struct node{
ll x;
ll y;
}a[500005];
bool cmp(node x,node y)
{
return x.x<y.x;
}
int main()
{
// freopen("data10.in","r",stdin);
// freopen("data10.out","w",stdout);
cin>>n>>k;
for1(i,1,sqrt(k))
{
if(k%i==0)
{
a[++cnt].x=i;
a[cnt].y=n/i;
a[++cnt].x=k/i;
a[cnt].y=n/(a[cnt].x);
}
}
sort(a+1,a+cnt+1,cmp);
for(int i=cnt;i>=1;i--)
{
for1(j,1,i-1)
{
if(a[i].x%a[j].x==0) a[j].y-=a[i].y;
}
}
for1(i,1,cnt)
ans+=a[i].x*a[i].y;
cout<<ans<<endl;
return 0;
}
100分 __int128/高精:
#include<bits/stdc++.h>
#define for1(i,a,b) for(ll i=a;i<=b;i++)
#define ll long long
using namespace std;
__int128 read(){
__int128 x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
void print(__int128 x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9) print(x/10);
putchar(x%10+'0');
}
__int128 n,k,cnt;
__int128 jl[5000005],ans;
struct node{
__int128 x;
__int128 y;
}a[5000005];
bool cmp(node x,node y)
{
return x.x<y.x;
}
int main()
{
// freopen("data12.in","r",stdin);
// freopen("data12.out","w",stdout);
n=read();
k=read();
ll ji=k;
for1(i,1,sqrt(ji))
{
if(k%i==0)
{
a[++cnt].x=i;
a[cnt].y=n/i;
a[++cnt].x=k/i;
a[cnt].y=n/(a[cnt].x);
}
}
sort(a+1,a+cnt+1,cmp);
for(int i=cnt;i>=1;i--)
{
for1(j,1,i-1)
{
if(a[i].x%a[j].x==0) a[j].y-=a[i].y;
}
}
for1(i,1,cnt)
ans+=a[i].x*a[i].y;
print(ans);
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库