枚举问题集

cs 复制代码
#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;
}
相关推荐
学长毕设6 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
zzu123zsw7 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
UIU1147 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
源码集结号8 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场8 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi8 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
啃瓜子的松鼠8 小时前
泛微OAe9-后端二开异步调用
java
秋天的怀念_David9 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放9 小时前
Python基础语法练习题(73)
java·前端·python
Wang's Blog9 小时前
Java 项目实战: 交友项目 - 环信后台发送消息测试
java·交友