问题 A: 守形数
题目描述
守形数是这样一种整数,它的平方的低位部分等于它本身。
比如25的平方是625,低位部分是25,因此25是一个守形数。
编一个程序,判断N是否为守形数。
输入
输入包括1个整数N,2<=N<100。
输出
可能有多组测试数据,对于每组数据,
输出"Yes!”表示N是守形数。
输出"No!”表示N不是守形数。
样例输入
6 11
样例输出
Yes! No!
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<iostream>
#include<algorithm>
void check(int n)
{
int nn = n*n,i=0,j=0;
char n1[10];
char n2[10];
while(n)
{
n1[i++] = n%10+'0';
n/=10;
}
while(nn)
{
n2[j++] = nn%10+'0';
nn/=10;
}
int k=0;
for(k=0; k<i; k++)
{
if(n1[k]!=n2[k])
{
printf("No!\n");
break;
}
}
if(k==i)
printf("Yes!\n");
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
check(n);
}
}
/**************************************************************
Problem: 1939
User: 151210132
Language: C++
Result: 正确
Time:0 ms
Memory:2020 kb
****************************************************************/
问题 B: 反序数
题目描述
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值
输入
程序无任何输入数据。
输出
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<iostream>
#include<algorithm>
int change(int n)
{
int sum=0;
while(n)
{
sum = sum*10 + n%10;
n/=10;
}
return sum;
}
int main()
{
int a[1010],k=0;
for(int i=1000; i<=9999; i++)
{
if(i==change(i*9))
a[k++] = i;
}
for(int i=0; i<k; i++)
{
printf("%d",a[i]);
if(i<k-1)
printf(" ");
else
printf("\n");
}
}
/**************************************************************
Problem: 1940
User: 151210132
Language: C++
Result: 正确
Time:0 ms
Memory:2020 kb
****************************************************************/
问题 C: 百鸡问题
题目描述
用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。
输入
测试数据有多组,输入n。
输出
对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
样例输入
45
样例输出
x=0,y=0,z=100 x=0,y=1,z=99 x=0,y=2,z=98 x=0,y=3,z=97 x=0,y=4,z=96 x=1,y=0,z=99 x=1,y=1,z=98 x=1,y=2,z=97 x=2,y=0,z=98
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<iostream>
#include<algorithm>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int x=0; x<=n/5; x++)
{
for(int y=0; y<=n/3; y++)
{
for(int z=0; z<=3*n; z++)
{
if(x+y+z==100&&(5*double(x)+3*double(y)+1/3.0*double(z)<=double(n)))
{