人过大佛寺
*4
寺佛大过人
求这5个字母所代表的数字,我想把这题用C实现一下, 无奈想不出算法,所以来求各位大侠帮下忙
哈哈哈
我做出来了答案是21978
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void transform(char []);
void main()
{
int a1,b1,i;
char a[5],b[5];
for(i=10000;i<25000;i++)//不能少于10000否则他的四倍就没有五个数,不能大于25000否则要进位
{
a1=i;
b1=i*4;
itoa(a1,a,10);//转换成字符
itoa(b1,b,10);
transform(b);//首尾调换
if(strcmp(a,b)==0)//比较相等就有输出
printf("%d\n",i);
}
}
void transform(char b[])
{
int i,temp;
for(i=0;i<3;i++)
{
temp=b[i];
b[i]=b[4-i];
b[4-i]=temp;
}
}
希望我合你意
哈哈哈
我做出来了答案是21978
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void transform(char []);
void main()
{
int a1,b1,i;
char a[5],b[5];
for(i=10000;i<25000;i++)//不能少于10000否则他的四倍就没有五个数,不能大于25000否则要进位
{
a1=i;
b1=i*4;
itoa(a1,a,10);//转换成字符
itoa(b1,b,10);
transform(b);//首尾调换
if(strcmp(a,b)==0)//比较相等就有输出
printf("%d\n",i);
}
}
void transform(char b[])
{
int i,temp;
for(i=0;i<3;i++)
{
temp=b[i];
b[i]=b[4-i];
b[4-i]=temp;
}
}
希望我合你意
谢谢你的回答,但我对中间几行不是很明白itoa是什么函数,什么用途的呀!
#include<stdio.h>
#define N 5
union node
{
long int sum;
char m;
};
int main()
{
char a[N]={0};
long int i=99999;
register int j,k;
union node n;
while(i)
{
for(n.m=0;n.m<N-1;n.m++)
for(j=n.m+1;j<N;j++)
if(a[n.m]!=a[j])
k++;
n.sum=0;
if((N-1)*N/2==k)
{
k=0;
for(j=0;j<N;j++)
n.sum=n.sum*10+a[N-1-j];
n.sum*=4;
for(j=0;j<N;j++)
{
if(a[N-j-1]==n.sum%10)
k++;
n.sum/=10;
}
if(k==N)
{ for(j=0;j<N;j++)
printf("%d ",a[N-1-j]);
puts(""); }
}
n.sum=0;
k=0;
a[0]++;
for(j=0;j<N-1;j++)
if(a[j]>9)
{
a[j]=0;
if(j+1<N)
a[j+1]++;
else
a[j+1]=0;
}
i--;
}
return 0;
}
[此贴子已经被作者于2007-2-17 10:24:06编辑过]