竖式问题
2015-10-02 11:28
239 查看
题目:
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
样例输入:2357
样例输出:
<1>
..775
X..33
-----
.2325
2325.
-----
25575
The number of solutions = 1
分析:
本题可直接暴力穷举所有可能解,代码如下:
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
样例输入:2357
样例输出:
<1>
..775
X..33
-----
.2325
2325.
-----
25575
The number of solutions = 1
分析:
本题可直接暴力穷举所有可能解,代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> //判断字符串buf是否在s中 int buf_in_str(char* buf,char* s) { char* ps = s; while(*buf) { s = ps; while(*s) { if(*buf==*s) break; s++; } if(!*s)return 0; buf++; } return 1; } int main() { int i; int ok; int first,second; int x,y,ans; int solution; char s[20]; char buf[100]; while(~scanf("%s",s)) { solution = 0; for(first=100; first<1000; first++) { for(second = 10; second<100; second++) { x = first*(second%10); y = first*(second/10); ans = first*second; sprintf(buf,"%d%d%d%d%d",first,second,x,y,ans); ok = 1; for(i=0; i<strlen(buf); i++) if(!strchr(s,buf[i])) {ok=0; break;} if(ok)//if(buf_in_str(buf,s)) { printf("<%d>\n%5d\nX%4d\n-----\n%5d\n%4d \n-----\n%5d\n", ++solution,first,second,x,y,ans); } } } printf("The number of solutions = %d\n",solution); } return 0; }
相关文章推荐
- centos 图形 命令行 界面切换
- 日经春秋 20151002
- 3-v4l2文档之——register and open注册,打开
- 编译安装LAMP
- tomcat8配置全局数据源
- Swift 语言的相关数据
- Tinder翻牌子项目总结(类似探探、Tinder、Nice的翻牌子)
- mysql(八、触发器)
- C/C++ | sizeof
- 浙江大学PAT_甲级_1063. Set Similarity (25)
- c++ primer 学习之路 二 —— 实验楼作业笔记(1-3)
- 使用SlickEdit2013 来创建带有makefile文件的工程
- POJ 1905:Expanding Rods 求函数的二分
- 查询各个部门的部门号,部门名,部门人数及部门平均工资
- POJ 1905:Expanding Rods 求函数的二分
- 邂逅英语路上的风景
- 06数据库设计01
- Rational rose的安装
- 天声人語 20151002
- Linux 开发环境搭建与使用——SlickEdit 简单使用教程