#include <stdio.h>
int main() {
int n = 2021;
long long ans = 0;
for (int x = 1; x <= n; x++) {
ans += n / x;
}
printf("%lld\n", ans);
return 0;
}
cs复制代码
#include <stdio.h>
// 计算正整数n的正约数个数
long long countDivisors(long long n) {
long long count = 1; // 最终约数个数,初始为1(乘法单位元)
// 分解质因数2
int exponent = 0;
while (n % 2 == 0) {
exponent++;
n /= 2;
}
count *= (exponent + 1); // 2的指数+1
// 分解奇数质因数(从3开始,步长2)
for (long long i = 3; i * i <= n; i += 2) {
exponent = 0;
while (n % i == 0) {
exponent++;
n /= i;
}
count *= (exponent + 1); // 当前质因数的指数+1
}
// 若剩余n>1,说明是最后一个质因数
if (n > 1) {
count *= 2; // 指数为1,1+1=2
}
return count;
}
int main() {
long long num = 12000000; // 目标数
long long result = countDivisors(num);
printf("12000000的正约数个数为:%lld\n", result);
return 0;
}
cs复制代码
#include <stdio.h>
int main() {
int cnt[10]; // 存储0~9的卡片数量
// 初始化:每个数字2021张
for (int i = 0; i < 10; i++) {
cnt[i] = 2021;
}
int n = 1;
while (1) {
int tmp = n;
// 复制当前卡片状态,避免提前修改导致错误
int tmp_cnt[10];
for (int i = 0; i < 10; i++) {
tmp_cnt[i] = cnt[i];
}
// 逐位消耗卡片
while (tmp > 0) {
int d = tmp % 10;
tmp_cnt[d]--;
if (tmp_cnt[d] < 0) {
// 卡片不足,输出上一个数
printf("%d\n", n - 1);
return 0;
}
tmp /= 10;
}
// 卡片足够,更新真实卡片数量
for (int i = 0; i < 10; i++) {
cnt[i] = tmp_cnt[i];
}
n++;
}
return 0;
}
cs复制代码
#include <stdio.h>
#include <stdlib.h>
int gcd(int a,int b)
{
while(b!=0)
{
int t=b;
b=a%b;
a=t;
}
return a;
}
int main(int argc, char *argv[])
{
int cnt=0;
for(int i=1;i<=2020;i++)
{
for(int j=1;j<=2020;j++)
{
if(gcd(i,j)==1) cnt++;
}
}
printf("%d",cnt);
return 0;
}
cs复制代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int x=0;//记录三角数
for(int i=1;;i++){//查找三角数
x+=i;
if(x>20220514){//大于20220514,验证是否为回文数
int b=x;
int a=0;
while(b!=0){//将三角数倒置放入a中储存
a=a*10+b%10;
b/=10;
}
if(a==x){//比较a是否等于x,相等说明x为三角回文数
printf("%d",x);
break;
}
a=0;//不是,重置a进入下一次验证
}
}
return 0;
}
cs复制代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long long ans=0;
for(long long i=1;i<1000000007;i++)
{
if((i*2021+8)%1000000007==0)
{
ans=i;
break;
}
}
printf("%lld",ans);
return 0;
}
cs复制代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long long x;
x=256*255*254/3+256*255/2;
printf("%lld",x);
return 0;
}