王道上机指南
2.1 枚举
- 求反序数
int Reverse(int x){
int revx = 0;
while(x != 0){
revx *= 10;
revx += x%10;
x /= 10;
}
return revx;
}
#include<stdio.h>
int Reverse(int x){
int revx = 0;
while(x != 0){
revx *= 10;
revx += x%10;
x /= 10;
}
return revx;
}
int main(){
int a,b,c,d;
a=1;
int s1,s2;
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=1;d<=9;d++){
s1= a*1000+b*100+c*10+d;
if ((s1*9) == Reverse(s1)){
printf("%d%d%d%d\n",a,b,c,d);
}
}
return 0;
}
#include<stdio.h>
int main(){
int i,n,sum=0;
scanf("%d",&n);//注意边缘值 n = 1的情况
for( i = 1; i <= n; i++){ //注意i <= n
if((i%10 == 7) || (i%7 == 0)){
continue;
}
else{
sum += i*i;
}
}
printf("%d\n",sum);
return 0;
}
>注意 z >= 0
#include<stdio.h>
int main(){
int n,x,y,z;
scanf("%d",&n);
for(x = 0; x <= 500; x++)
for(y = 0; y <= 500; y++){
z = 100-x-y;
int sum = x*5 + y*3 + z/3;
if(sum <= n && (z >= 0)){
//sum ==n
if(sum == n ){
if(z%3 == 0)
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
//sum < n
else{
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
}
}
return 0;
}
#include<stdio.h>
int main(){
int n,x,y,z,a,b,price,sum;
scanf("%d%d%d%d",&n,&x,&y,&z);
int ma,mb,mprice;
ma=mb=mprice=0;
for(a = 1;a <=9;a++)
for(b = 0; b<=9;b++){
sum = a*10000+x*1000+y*100+z*10+b;
if(sum % n == 0){
price = sum/n;
if(mprice < price){
ma = a;
mb = b;
mprice = price;
}
}
}
if(ma==mb && mb == mprice){
printf("%d",ma);
}else{
printf("%d %d %d\n",ma,mb,mprice);
}
return 0;
}