枚举问题集

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;
}
相关推荐
2301_810160952 小时前
C++中的访问者模式高级应用
开发语言·c++·算法
郝学胜-神的一滴2 小时前
走进计算机图形学的浪漫宇宙 | GAMES101 开篇课程全解析
c++·算法·图形渲染·计算机图形学
没头脑的男大2 小时前
灵神,2x树的层序遍历,102,103,513
算法
m0_518019482 小时前
C++中的享元模式
开发语言·c++·算法
林夕sama2 小时前
多线程基础(五)
java·开发语言·前端
Zzxy2 小时前
HikariCP连接池
java·数据库
我带你来这儿就是为了告诉你我2 小时前
C++23新特性前瞻
开发语言·c++·算法
陌夏2 小时前
快速排序 (Quick Sort)
算法
罗超驿2 小时前
Java数据结构_栈_算法题
java·数据结构·