填空题
方程整数解
正确答案:
10 18 24
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
int t = sqrt(n); int ok = 0;
for(int a = 1; a <= t; a++)
{
for(int b = a; b <= t; b++)
{
int c = n - a*a - b*b;
c = sqrt(c);
if(a*a + b*b + c*c == n && c >= b && b >= a)
printf("%d %d %d\n",a,b,c), ok = 1;
}
}
if(!ok) puts("No Solution");
}
return 0;
}
星系炸弹
正确答案:
2017-08-05
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int months[13];
void init()
{
for(int i = 1; i <= 12; i++)
{
if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) months[i] = 31;
else if(i == 2) months[2] = 0;
else months[i] = 30;
}
}
bool inbound(int x)
{
if((x%4 == 0 && x%100) || x%400 == 0) return true;
return false;
}
int main()
{
init();
int year,month,day,n;
while(~scanf("%d %d %d %d", &year,&month,&day,&n))
{
if(inbound(year)) months[2] = 29;
else months[2] = 28;
if(months[month] - day >= n)
printf("%d-%02d-%02d\n",year,month,day+n);
else
{
int t = months[month] - day;
n -= t;
day = 0;
month++;
if(month > 12) year++,month = 1;
while(n > 0)
{
if(inbound(year)) months[2] = 29;
else months[2] = 28;
for(int i = month; i <= 12; i++)
for(int j = 1; j<= months[i] && n > 0; j++)
{
n--;
if(n == 0)
{
day = j;
month = i;
break;
}
}
if(n>0) year++,month = 1;
}
printf("%d-%02d-%02d\n",year,month,day);
}
}
return 0;
}
奇妙的数字
正确答案:
69
#include <iostream>
#include <cstring>
using namespace std;
int a[10];
void work(long long x)
{
while(x > 0)
{
a[x%10]++;
x /= 10;
}
}
int main()
{
bool ok = true;
long long ans =0;
for(long long i = 1; i < 9876543211 && ok; i++)
{
memset(a,0,sizeof a);
long long x = i*i, y = i*i*i;
work(x); work(y);
if(a[0] == 1 && a[1] == 1 && a[2] == 1 &&
a[3] == 1 && a[4] == 1 && a[5] == 1 &&
a[6] == 1 && a[7] == 1 && a[8] == 1 &&
a[9] == 1) ok = false, ans = i;
}
cout<<ans<<endl;
return 0;
}
格子中的输出
正确答案:
(width-strlen(buf)-2)/2,"",buf,(width-</