A-小G的sum
题目描述:
定义 mind(x) 为 x 的最小约数,maxd(x) 为 x 的最大约数,给定一个数 n ,求 i 从 1 到 n 的 mind(i) 与 maxd(i) 的和
分析:
一个数最小约数为 1,最大约数为本身,所以直接求1-n的和,再加上 1*n就行
Python代码
n=int(input())
print(n+n*(n+1)//2)
B-小G的GCD
题目描述:
小G给你两个数n,k
我们定义 F(x) 为 i 从 1~x 如果 i%k==0,的 i 的和
现在希望你求出 i 从 1 到 n的 F(i) 的和
分析:
可以倒着取和,当i=n的时候,如果可以整除,那么 i 只加一次,所以只需要倒着for循环一下,让每次 count 加1就行
尝试拿C++写了一下,改了好几遍之后,才没语法错误(呜呜呜)
C++代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ll n,k;
ll ans=0;
int count=1;
scanf("%lld%lld",&n,&k);
for(int i=n;i>0;i--){
if(i%k==0)ans+=i*count;
count++;
}
printf("%lld",ans);
return 0;
}
C
没有C了,C和C以后就不会了(待我再补补题)