【题目一】把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法?
#include <stdio.h>
void main()
{
int i,j,k,num=0;
for(i=1;i<=19;i++)
for(j=1;j<=47;j++)
{
k=100-5*i-2*j;
if(k>0)
num++;
}
printf("%d\n",num);
}
【题目二】将1,2...9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数.
#include <stdio.h>
void main()
{
int i,j,k,l,m,n=1,a[10]={0},x;
for(i=1;i<=3;i++)
for(j=1;j<=9;j++)
{
if(j!=i)
for(k=1;k<=9;k++)
{
if(k!=i&&k!=j)
{
x=100*i+10*j+k;
for(l=1;l<=3;l++)
{
a[(l*x)%10]++;
a[(l*x)/10%10]++;
a[(l*x)/100]++;
}
for(m=1;m<=9;m++)
{
if(a[m]!=1)
n=0;
}
if(n)
printf("%5d%5d%5d\n",x,2*x,3*x);
for(n=1;n<=9;n++)
a[n]=0;
n=1;
}
}
}
}
【题目三】:穷举法中穷举方案的选择:
陈婷有一个E-MAIL邮箱的密码是一个5位数。但因为有一段比较长的日子没有打开这个邮箱了,陈婷把这个密码给忘了。不过陈婷自己是8月1日出生,而她妈妈的生日则是9月1日,她特别喜欢把同时是8l和9l的倍数用作密码。陈婷还记得这个密码的中间一位(百位数)是l。你能设计一个程序帮她找回这个密码吗?
#include <stdio.h>
#define N 81
#define M 91
int a(int x,int y)
{
int temp;
if(y>x)
{
temp=x;
x=y;
y=temp;
}
temp=x%y;
if(temp==0)
return y;
else
a(y,temp);
}
void main()
{
int i,x,y;
x=N*M/a(N,M);
y=x;
for(i=1;y<100000;i++)
{
y=x*i;
if(y>=10000)
{
if(y/100%10==1&&y<=99999)
printf("%6d\n",y);
}
}
}