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

解:

 1 #include <stdio.h>
2 #include <string.h>
3
4
5 int main()
6 {
7 int count = 0; //计数器
8 char s[20],buf[99];
9 scanf ("%s",s);
10 for (int abc = 111; abc<= 999 ; abc ++)
11 {
12 for (int de = 11; de <= 99; de ++)
13 {
14 int x = abc * (de % 10) , y = abc * (de/10) , z = abc * de;
15 sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);
16 int ok = 1;
17 for (int i =0;i<strlen(buf);i++)
18 if (strchr(s,buf[i]) == NULL ) ok = 0;
19 if (ok)
20 {
21 printf("<%d>\n",++count);
22 printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n",abc,de,x,y,z);
23 }
24 }
25 }
26 printf ("the number of the solutions = %d\n",count);
27 return 0;
28 }

1、获得集合。当然不用数组,因为字符串的查找可以给我们省下很大的功夫。

  这里涉及sprintf函数。查资料:sprintf(字符串数组,格式,内容……)。注意它是一个有返回值的函数。如果写入成功返回写入字符串的个数。如果不成功(溢出)返回负数。经过实验证明,此函数可以理解为覆盖字符串,而不会在原有的字符串后面添加字符。

2、枚举所有可能的竖式:使用双循环。这点没有什么好说的

3、判断竖式是否合法,即判断竖式里面的数字是否属于数组。使用strchr(string.h)函数。strchr(字符串,字符)在字符串里面查找字符,成功返回字符第一次出现的位置(以及以后的字符),反之返回NULL。个人建议这个搜索循环可以用break短路一下。毕竟找到一个不一样就可以不用再往下找了。

4、输出问题,%nd,输出n个字符否则用空格补齐。

【OI】竖式问题分析与解答的更多相关文章

  1. UVa 12333 - Revenge of Fibonacci manweifc(模拟加法竖式 & 字典树)

    题意: 给定n个(n<=40)数字, 求100000个以内有没有前面n个数字符合给定的数字的fibonacci项, 如果有, 给出最小的fibonacci项, 如果没有, 输出-1. 分析: 可 ...

  2. acdream 小晴天老师系列——竖式乘法(简单穷举)

    小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)   ...

  3. C -小晴天老师系列——竖式乘法

    C - 小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others ...

  4. [ACdream]小晴天老师系列——竖式乘

    题目链接:http://acdream.info/contest?cid=1269#problem-C Problem Description 小晴天是ACdream团队中最牛的老师之一,他最擅长数学 ...

  5. L1-046. 整除光棍(模拟竖式计算除法)

    L1-046. 整除光棍 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 翁恺 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1 ...

  6. java JAXB + STAX(是一种针对XML的流式拉分析API)读取xml

    JDK1.5需要添加jar包,1.6以后就不需要了<dependency> <groupId>stax</groupId> <artifactId>st ...

  7. 怎样用MathType创建竖式算法

    在使用MathType编辑公式时,有时将最简单的表达式变成Word文档也会出现一些问题.比如MathType竖式.下面介绍MathType竖式的一些编辑方法. 步骤如下: 步骤一:在MathType底 ...

  8. BootStrap实现左侧或右侧竖式tab选项卡

    BootStrap实现左侧或右侧竖式tab选项卡 代码如下: <div style="height: 100px;"> <div class="col- ...

  9. UVA-12333 Revenge of Fibonacci(竖式加法模拟 & 字典树)

    题目: 给出一个斐波那契数字的前缀,问第一个有这个前缀的数字在斐波那契数列中是第几个. 思路: 紫书提示:本题有一定效率要求.如果高精度代码比较慢,可能会超时. 利用滚动数组和竖式加法来模拟斐波那契相 ...

随机推荐

  1. PDL语言/ 盒图N-S/ PAD图

    PDL语言 伪码伪代码 基本语法 算法用Begin开始,以End结束(如果只表示中间部分的算法可以不要) 每一条指令,占一行.指令的结束不用任何符号 注释 用"//"表示 用Pri ...

  2. 一篇文章让你搞懂如何通过Nginx来解决跨域问题

    Nginx跨域实现   首先大家要搞清楚什么是跨域,为什么会有跨域情况的出现.哪些情况属于跨域? 跨域:由于浏览器的同源策略,即属于不同域的页面之间不能相互访问各自的页面内容 注:同源策略,单说来就是 ...

  3. 【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题

    问题描述 在.Net Core 5.0 项目中,添加 Microsoft.Extensions.Logging.AzureAppServices 和 Microsoft.Extensions.Logg ...

  4. NOIP 模拟 $13\; \text{工业题}$

    题解 本题不用什么推式子,找规律(而且也找不出来) 可以将整个式子看成一个 \(n×m\) 矩阵 考虑 \(f_{i,j}\),它向右走一步给出 \(f_{i,j}×a\) 的贡献,向下走一步给出 \ ...

  5. mongodb中时间跟实际时间相差8小时----时区问题

    遇到的问题 参考:mongo中时间跟实际时间相差8小时 Mongo中一个Collection有一个字段用来存放数据的插入时间,但记录的时间比实际时间晚了8小时. 查询得知存储在mongodb中的时间是 ...

  6. idea中的springboot的maven项目报错Failed to clean project: Failed to delete D:\new_shunyi\shunyi\target\shunyi\WEB-INF\classes\static\

    正准备打包上传到测试环境,本想先clean下,没想到报了个这个错,意思大概是无法删除target下的某个文件,没有权限(一脸懵逼): 后来百度发现可能是因为我之前启动了tomcat,未关闭,然后关闭了 ...

  7. Win10下安装SVN出现2503/2502解决方法

    出现错误的原因是权限不够 在win10的开始按钮上,右键点击,选择"命令提示符(管理员)(A)",弹出管理员身份运行模式的命令行的窗口,输入如下的命令: msiexec /pack ...

  8. 处理URLs

    问题 你有一个包含相对URLs路径的HTML文档,需要将这些相对路径转换成绝对路径的URLs. 方法 在你解析文档时确保有指定base URI,然后 使用 abs: 属性前缀来取得包含base URI ...

  9. 【C++】 四种强制类型转换(static_cast 与 dynamic_cast 的区别!)

    强制类型转换 1. static_cast 2. dynamic_cast 3. const_cast 4. reinterpret_cast 5. 为什么要需要四种类型转换? 1. static_c ...

  10. mysql基础操作(二):简单查询DQL

    -- 1.查询所有字段 select * from student; -- 2.查询指定的字段 select id from student; select id, name from student ...