NEFU 暴力枚举

丑数(打表)

公因数只有2 3 5 7的数

#include <bits/stdc++.h>
using namespace std;
int min4(int a,int b,int c,int d);
int main()
{
    int x[6000];
    int i2,i3,i5,i7;
    x[1]=i2=i3=i5=i7=1;
    for(int i=2; i<5900; i++)
    {
        x[i]=min4(x[i2]*2,x[i3]*3,x[i5]*5,x[i7]*7);
        if(x[i]%2==0)//不用else if的原因是避免重复,比如当枚举到6时需要2和3的下标同时++
            i2++;
        if(x[i]%3==0)
            i3++;
        if(x[i]%5==0)
            i5++;
        if(x[i]%7==0)
            i7++;
    }
    int n;
    while(cin>>n)
    {
        if(n==0)
            break;
        else
            printf("%d\n",x[n]);
    }
    return 0;
}
int min4(int a,int b,int c,int d)
{
    return min(min(a,b),min(c,d));
}

便利所有的数,因子只有2 3 5 7

for(int i=2; j<10; i++)
    {
        a=i;
        while(a%2==0)//能被2 3 5 7反复除完剩1即可
            a=a/2;
        while(a%3==0)
            a=a/3;
        while(a%5==0)
            a=a/5;
        while(a%7==0)
            a=a/7;
        if(a==1)
            x[j]=i;
    }

奶牛碑文

统计类似于2019 cow在字符串里面出现的个数

#include <bits/stdc++.h>

using namespace std;
char x[100020];
long long int n,c,co,cow;
int main()
{
    scanf("%lld%s",&n,x);
    for(int i=0; i<n; i++)
    {
        if(x[i]=='C')c++;//将c的个数统计到co,再将co个数统计与cow
        if(x[i]=='O')co=co+c;
        if(x[i]=='W')cow=cow+co;
    }
    printf("%lld",cow);
    return 0;
}
发布了13 篇原创文章 · 获赞 0 · 访问量 401

猜你喜欢

转载自blog.csdn.net/qq_46126537/article/details/103810531