1250: [蓝桥杯2015初赛]方程整数解
#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
int flag;
while(cin>>n)
{
flag =0;
for(int a = 1 ;a <= n ;++a)
for(int b = a ; a*a+b*b<= n ; ++b )
for(int c = b ; a*a+b*b+c*c <= n ; ++c)
if(a*a+b*b+c*c==n)
{
flag = 1;
cout<<a<<" "<<b<<" "<<c<<endl;
}
if(flag == 0) cout<<"No Solution"<<endl;
}
return 0;
}
1251: [蓝桥杯2015初赛]星系炸弹
#include <bits/stdc++.h>
using namespace std;
int isRui(int x)
{
if(x%4==0&&x%100!=0||x%400==0) return 1;
else return 0;
}
int main()
{
int da[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d,n;
while(cin>>y>>m>>d>>n)
{
for(int i = 1 ;i<=n ;i++)
{
if(isRui(y)) da[1] = 29;
else da[1] =28;
if(++d>da[m-1])
{
d = 1;
m++;
}
if(m>12)
{
m = 1;
y++;
}
}
printf("%d-%02d-%02d\n",y,m,d);
}
return 0;
}
1252: [蓝桥杯2015初赛]奇妙的数字
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[10];
int i = 30;
while(1)
{
memset(a,0,sizeof a);
int x = i * i;
int y = i * i * i;
while(x)
{
a[x%10]++;
x/=10;
}
while(y)
{
a[y%10]++;
y/=10;
}
int cnt = 0 ;
for(int j = 0 ; j < 10 ;j++ )
{
if(a[j] == 1) cnt++;
}
if(cnt==10) {printf("%d\n",i);break;}
else i++;
}
return 0;
}
1253: [蓝桥杯2015初赛]牌型种数
#include <bits/stdc++.h>
using namespace std;
int ans,sum;
void dfs(int u)
{
if(sum>13) return;
if(u==13)
{
if(sum==13) ans++;
return;
}
for(int i = 0; i< 5;i++) //13种牌,每种4张;5种可能性,0(不选)、1、2、3、4
{
sum += i;
dfs(u+1);
sum -=i;//恢复现场
}
}
int main()
{
dfs(0);
cout<<ans<<endl;
return 0;
}