示例代码
#include <iostream>
using namespace std;
int Calc(int base,int n)
{
int sum=0;
for(;n;n/=base)//即为for(true;n!=0;n=n/base)
{
sum +=n%base;
}
return sum;
}
int main()
{
int i,n;
for(i=2992;i<=9999;i++)
{
a=Calc(10,i);
if(a==(Calc(12,i)&&a==Cala(16,i))
{
cout<<i<<endl;
}
}
return 0;
}
若不用函数则可以直接
#include <iostream>
using namespace std;
int main()
{
int cnt=0;
for(int i=2922;i<=9999;i++)
{
if((i/1000+i/100%10+i/10%10+i%10)==(i/1728+i/144%12+i/12%12+i%12)&&(i/1728+i/144%12+i/12%12+i%12)==(i/4096+i/256%16+i/16%16+i%16))
{
printf("%d\n",i);
cnt++;
}
}
return 0;
}
如果不嫌长的话判断条件可以这么写(就是看起来有点累)
示例代码
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
char temp[1000005];
int isab(char c)
{
if(c>='a'&&c<='z')
{
return 1;
}
if(c>='A'&&c<='Z')
{
return 1;
}
return 0;
}
int vowel(char c)
{
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')
{
return 1;
}
if(c=='A'||c=='E'||c=='I'||c=='O'||c=='U')
{
return 1;
}
return 0;
}
int main()
{
while(fgets(temp,1000005,stdin)) //由于gets被禁用使用fgets代替fgets(数组指针,最大字符数,被读取的流)“stdin表示标准输入,一般是从输入设备如键盘的缓冲区输入”
{
int s=0,t=0;
while(temp[s])
{
if(!isab(temp[s]))
{
printf("%c",temp[s++]);
t=s;
}
else if(isab(temp[t]))
{
t++;
}
else
{
if(!vowel(temp[s]))
{
for(int i=s+1; i<t; ++i)
{
printf("%c",temp[i]);
}
printf("%c",temp[s]);
}
else
{
for(int i=s; i<t; ++i)
{
printf("%c",temp[i]);
}
}
printf("ay");
s=t;
}
}
}
return 0;
}
示例代码
#include <iostream>
using namespace std;
char a[5][5];
int winornot(char c)
{
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3&&a[i][j]==c;j++)
{
if(j==3)return 1;
}
for(int j=1;j<=3&&a[j][i]==c;j++)
{
if(j==3)return 1;
}
}
for(int i=1;i<=3&&a[i][i]==c;i++)
{
if(i==3)return 1;
}
for(int i=1;i<=3&&a[i][4-i]==c;i++)
{
if(i==3)return 1;
}
return 0;
}
int main()
{
int n,o,x;
scanf("%d",&n);
while(n--)
{
getchar();
int cnto=0,cntx=0;
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
scanf("%c",&a[i][j]);
if(a[i][j]=='X')cntx++;
else if(a[i][j]=='O') cnto++;
}
getchar();
}
int f=1;
if(winornot('X')&&winornot('O'))
{
f=0;
}
if(winornot('X')&&cntx==cnto)
{
f=0;
}
if(cnto>cntx||cntx-cnto>1)
{
f=0;
}
if(winornot('O')&&cnto!=cntx)
{
f=0;
}
if(winornot('X')&&cnto==cntx)
{
f=0;
}
if(f==1)printf("yes\n");
else printf("no\n");
}
return 0;
}
示例代码
#include <iostream>
using namespace std;
long long F[14];
void init()
{
for(int i=0;i<14;i++)
{
F[i]=1;
}
for(int i=1;i<=13;i++)
{
F[i]=F[i-1]*i;
}
}
int main()
{
long long n;
init();
while(~scanf("%lld",&n))
{
if(n>13||(n<0&&(-n)%2==1))
{
printf("Overflow!\n");
}
else if(F[n]<10000||(n<0&&(-n)%2==0))
{
printf("Underflow!\n");
}
else
{
printf("%lld\n",F[n]);
}
}
return 0;
}
示例代码
#include <iostream>
#include <string.h>
using namespace std;
const int N=20;
int f[N+1][N+1][N+1];
int w(int a,int b,int c)
{
if(a<=0||b<=0||c<=0)return 1;
else if(a>N||b>N||c>N)return w(N,N,N);
else if(f[a][b][c])return f[a][b][c];
else if(a<b&&b<c)return f[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
else return f[a][b][c]=w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);
}
int main()
{
memset(f,0,sizeof(f));
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
{
if(a==-1&&b==-1&&c==-1)return 0;
printf("w(%d, %d, %d) = %d\n",a,b,c,w(a,b,c));
}
return 0;
}
示例代码
前缀和
借鉴自
https://blog.csdn.net/weixin_43918531/article/details/86636929
#include <iostream>
using namespace std;
long long sum(long long n)
{
long long ans = 0, x;
while(n) {
x = n % 10;
n /= 10;
ans += ((1 + x) * x) / 2 + n * 45;
}
return ans;
}
int main()
{
long long a, b;
while(~scanf("%lld%lld", &a, &b) && a >= 0)
printf("%lld\n", sum(b) - sum(a - 1));
return 0;
}
AC代码
#include <iostream>
#include <string.h>
#include <string>
#include <algorithm>
using namespace std;
struct T
{
string name;
int time[4];
int frequency[4];
int num,timesum;
}team[30];
void init()
{
for(int i=0;i<30;i++)
{
team[i].name="";
team[i].num=0;
team[i].timesum=0;
for(int j=0;j<4;j++)
{
team[i].frequency[j]=0;
team[i].time[j]=0;
}
}
}
bool cmp(T a,T b)
{
if(a.num!=b.num)return a.num>b.num;
if(a.timesum!=b.timesum)return a.timesum<b.timesum;
}
int main()
{
int n;
scanf("%d",&n);
init();
for(int i=0;i<n;i++)
{
cin>>team[i].name;
for(int j=0;j<4;j++)
{
cin>>team[i].frequency[j]>>team[i].time[j];
if(team[i].time[j]>0)
{
team[i].num++;
team[i].timesum+=team[i].time[j]+(team[i].frequency[j]-1)*20;
}
}
}
sort(team,team+n,cmp);
cout<<team[0].name<<" "<<team[0].num<<" "<<team[0].timesum<<endl;
return 0;
}