- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C 语言程序设计 100 例之( 15 ):除法算式
例 15 除法算式
问题描述
输入正整数 n (2≤ n≤ 68),按从小到大输出所有形如 abcde/fghi=n的表达式。其中 a~i为 1~9 的 一个排列。
输入格式
每行为一个正整数 n (n = 1500 输入 n=0结束。
输出格式
输出满足条件的所有形如 abcde/fghi=n的表达式, 每个表达式占一行, 具体格式参见输出样例。
输入样例
4
20
62
0
输出样例
15768/3942=4
17568/4392=4
23184/5796=4
31824/7956=4
No Solution!
79546/1283=62
94736/1528=62
(1)编程思路。
本例需要先确定好穷举的思路。虽然题目说 a~i为 1~9 的一个排列,但穷举 1~9 的所有
排列显然没有必要。
可以穷举除数 fghi,这是一个 4 位数,最小可为 1234 ,最大可为 9876 ,然后按 fghi*n
计算出 abcde,最后判断这 9 个数字是否不相同。
为判断 9个数字是否相同,可以定义一个数组 flag[10 其中 flag[的i]值表示数字 i在算
式中出现的次数,显然 flag[1]~flag[]值全为 1才满足要求。
另外,在穷举时进行适当优化。若计算出 abcde 小于 12345,显然除数 fghi太小,直接
增大除数进行下次穷举; 若计算出 abcde 大于 98765,显然除数 fghi太大,不再可能找到解,直
接退出穷举循环。
(2)源程序。
#include stdio.h
int main()
{
int n,x,y,i,flag[10],t;
while (scanf(%d,n) n!=0)
{
t=0;
for (y=1234;y=9876;y++)
{
x=y*n;
if (x12345) continue;
if (x98765) break;
for (i=0;i10;i++)
flag[i]=0;
flag[x/10000]++; flag[x%10000/1000]++;
flag[x%1000/100]++; flag[x%100/10]++;
flag[x%10]++;
flag[y/1000]++; flag[y%1000/100]++;
flag[y%100/10]++; flag[y%10]++;
for (i=1;i10;i++)
if (flag[i]!=1) break;
if (i==10)
{
printf(%d/%d=%d\n,x,y,n);
t++;
}
}
if (t==0) printf(No Solution!\n);
}
return 0;
}
习题 15
15- 1 完美立方
问题描述
a b 3 + c3 = 为完美立方等式。例如 1 3 + + =93 。编写一个程序,输出 100 以内的所有
四元组( a, b, c,) ,d 使得 +b3 + = d3,其中 1≤ a b c d≤ 100。
输入格式
无输入
输出格式
100 以内所有满足 a3 +b3 + c3 = d3 的四元组( a, b, c,) d,每行输出 5 组。
输入样例
无输入
输出样例
( 3, 4, 5, 6) (1,6, 8, 9) ( 6, 8, 10, 12) ( 2, 12, 16, 18) ( 9, 12, 15, 18)
( 3, 10, 18, 19) ( 7, 14, 17, 20) ( 12, 16, 20, 24)( 4, 17, 22, 25) ( 3, 18, 24, 27)
( 1)编程思路。
3 3 3 3因为要求 100 以内所有满足 a +b + c = d 的四元组( a, b,
3 3 3 3
int cube[101],; 且 cube[i]的值赋 i3,以便于后面直接引用。
从 d 出发进行穷举,则穷举范围为
6≤ d≤100
1≤ a≤ d-3
a+1 ≤ b≤ d-2
b+1 ≤c≤ d-1
( 2)源程序。
#include stdio.h
int main()
{
int i, a, b, c, d,cnt=0;
int cube[101];
for (i=1 ; i=100; i++)
cube[i]=i*i*i;
for (d=6 ; d=100; d++)
for (a=1; ad-2; a++ )
{
if (cube[d] cube[a]+cube[a+1]+cube[a+
文档评论(0)