枚举问题集

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;
}
相关推荐
蓝斯4979 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加贝塞尔曲线,上、下、左、右连接点
java·c#·流程图
前端工作日常9 小时前
我学习到的Java 的 Service 分层:itf 和 impl 到底是什么?
java·后端
都叫我大帅哥10 小时前
Spring @Transactional 注解完全指南
java·spring
Java成神之路-10 小时前
G1 垃圾回收器 :SATB + TAMS核心机制深度解析
java·jvm
前端工作日常10 小时前
我学习到的JIT即时编译与机器码缓存失效
java·后端
带刺的坐椅10 小时前
Solon 的 10 种 HTTP 服务器:改一行依赖,换一个引擎
java·solon·jetty·undertow·mcp-server·htttp
luj_176811 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
xcLeigh11 小时前
Go入门:变量声明的五种方式详解
java·开发语言·golang
AI大模型-小华11 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
Mark_ZP12 小时前
【锁1】Synchronized vs ReentrantLock区别
java