竖式问题

来源:互联网 发布:大数据带来的变革更好 编辑:程序博客网 时间:2024/05/02 04:39

from......http://zhan.renren.com/xiaoyantian?gid=3602888498024774969&checked=true


题目:


找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。


样例输入:2357


样例输出:


<1>


..775


X..33


-----


.2325


2325.


-----


25575


The number of solutions = 1


 题意:[code=C/C++][/code] 
      775                                       7   ,5在{2,   3,   5,   7}集合中 
    X   33                                       3在{2,   3,   5,   7}集合中 
----------------------------------------------------- 
    2325                                         2,3,5在{2,   3,   5,   7}集合中 
  2325 
------------------------------------------------------ 
  25575                             2,   5,   7在{2,   3,   5,   7}集合中 
输入一个数,表示这个数组中含有这几个数的元素。
代码:


#include <stdio.h>   
#include <string.h>   
   
int main()   
{   
  int abc, de, x, y, z, i, ok, count = 0;   
  char s[20], buff[100];   
  scanf("%s", s);   
   
  for (abc = 100; abc < 999; abc++)   
  {   
  for (de = 10; de < 99; de++)   
  {   
  x = abc * (de % 10);   
  y = abc * (de / 10);   
  z = abc * de;   
  sprintf(buff, "%d%d%d%d%d", abc, de, x, y, z);   
  ok = 1;   
  for (i = 0; i < strlen(buff); i++)   
  if (strchr(s, buff[i]) == NULL)   
  ok = 0;   
  if (ok)   
  {   
  printf("<%d>/n", ++count);   
  printf("%5d/nX%4d/n-----/n%5d/n%4d/n-----/n%5d/n", abc, de, x, y, z);   
  }   
  }   
  }   
  printf("The number of solutions = %d/n", count);   
  return 0;   
}

0 0
原创粉丝点击