找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式(乘法过程)中,所有数字属于一个特定的数字集合。
输入数字集合(相邻数字之间没有空格),输出所有竖式。
每个竖式前都有编号,最后输出解的总数。
分析:
1.尝试所有的abc*de,判断是否满足条件。
2.应该充分里面string里面自带函数
strlen:返回字符串实际长度(’\0’结束)
strchr(const char *s,char c):查找字符串s中首次出现字符c的位置,返回c开头的字符串,不存在返回NULL
strichr:功能同上,但是不区分大小写
strcpy(a,b):赋值 a=b
strcat(a,b):连接 a=a+b
strcmp(str1,str2):比较 若str1 == str2,返回0。str1小于str2,返回负数,str1大于str2,返回正数
#include<cstdio>
#include<string.h>
int main()
{
printf("%s", strchr("abcdef", 'c'));
int i, ok, abc, de, x, y, z, count = 0;
char s[20], buf[99];
scanf("%s", s);
for (abc = 111; abc <= 999; abc++)
for (de = 11; de <= 99; de++)
{
x = abc*(de % 10);
y = abc*(de / 10);
z = abc*de;
sprintf(buf, "%d%d%d%d%d", abc, de, x, y, z);
ok = 1;
for (i = 0; i < strlen(buf); i++)
if ( strchr(s, buf[i]) == NULL)
ok = 0;
if (ok)
{
printf("<%d>\n", ++count);
printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n", abc, de, x, y, z);
}
}
printf("The number of solutions = %d\n", count);
return 0;
}