丑数(打表)
公因数只有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;
}