【OI】竖式问题分析与解答
题目:找出所有形如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】竖式问题分析与解答的更多相关文章
- UVa 12333 - Revenge of Fibonacci manweifc(模拟加法竖式 & 字典树)
题意: 给定n个(n<=40)数字, 求100000个以内有没有前面n个数字符合给定的数字的fibonacci项, 如果有, 给出最小的fibonacci项, 如果没有, 输出-1. 分析: 可 ...
- acdream 小晴天老师系列——竖式乘法(简单穷举)
小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- C -小晴天老师系列——竖式乘法
C - 小晴天老师系列——竖式乘法 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others ...
- [ACdream]小晴天老师系列——竖式乘
题目链接:http://acdream.info/contest?cid=1269#problem-C Problem Description 小晴天是ACdream团队中最牛的老师之一,他最擅长数学 ...
- L1-046. 整除光棍(模拟竖式计算除法)
L1-046. 整除光棍 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 翁恺 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1 ...
- java JAXB + STAX(是一种针对XML的流式拉分析API)读取xml
JDK1.5需要添加jar包,1.6以后就不需要了<dependency> <groupId>stax</groupId> <artifactId>st ...
- 怎样用MathType创建竖式算法
在使用MathType编辑公式时,有时将最简单的表达式变成Word文档也会出现一些问题.比如MathType竖式.下面介绍MathType竖式的一些编辑方法. 步骤如下: 步骤一:在MathType底 ...
- BootStrap实现左侧或右侧竖式tab选项卡
BootStrap实现左侧或右侧竖式tab选项卡 代码如下: <div style="height: 100px;"> <div class="col- ...
- UVA-12333 Revenge of Fibonacci(竖式加法模拟 & 字典树)
题目: 给出一个斐波那契数字的前缀,问第一个有这个前缀的数字在斐波那契数列中是第几个. 思路: 紫书提示:本题有一定效率要求.如果高精度代码比较慢,可能会超时. 利用滚动数组和竖式加法来模拟斐波那契相 ...
随机推荐
- 实战爬取某网站图片-Python
直接上代码 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 from bs4 import BeautifulSoup 4 import request ...
- 快速从SQL语法过度到Elasticsearch的DSL语法
目录 前言 bool-相当于一个括号 should-相当于or must-相当于and must_not-相当于 ! and term-相当于= terms-相当于in between-相当于rang ...
- 让Dev支持C++11特性
如果你使用的是 Dev-C++ ,忘记了在设置中包含 -std=c++11是无法让Dev支持C++11特性的,导致一些C++11 中的好用的函数可能会产⽣生编译⽆无法通过的情况. 这时候你有两个方法 ...
- OSPF的DR与BDR
一.实验拓扑 二.实验编址 三.实验步骤: 1.设置路由器的端口IP等信息 2.搭建ospf网络 重启(退出系统模式):reset ospf process 查看: 查看完整的邻居信息: 可以看到DR ...
- SQL 练习37
检索至少选修两门课程的学生学号 SELECT Student.SId,Student.Sname,选课数 from Student, (SELECT sid,COUNT(cid) 选课数 from s ...
- sudo apt install net-tools [sudo] zyw 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树,正在读取状态信息... 完成,没有可用的软件包 net-tools,但是它被其它的软件包引用了。这可能意味着这个缺失的软件包可能已被废弃,或者只能在其他发布源中找到
截图: 先执行: sudo apt-get update 再执行: sudo apt install net-tools 即可安装成功!!
- python中的logging日志
logging使用 import logging import os from logging import handlers from constants.constants import Cons ...
- 信号量-Semaphore、SemaphoreSlim
核心类:Semaphore,通过int数值来控制线程个数. * 通过观察构造函数 public Semaphore(int initialCount, int maximumCount);: * in ...
- 整理之Fragment
基础 生命周期 执行层次 进 退 创建与销毁 onAttach -> onCreate -> onCreateView -> onActivityCreate onDestroyVi ...
- Linux定时任务(详细)
Linux定时任务一.首先查看是否安装了crontab[root@master ~]# rpm -qa |grep crontabcrontabs-1.11-6.20121102git.el7.noa ...