针对输入的数字集合的"abc*de"竖式计算
一.问题描述:
找出所有形如“abc*de”(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序应该输出空格,而非小数点)。
样例输入:
2357
样例输出:
二. 问题分析:按竖式计算的步骤各自计算,并将过程中算出的数得到一个数字集合ele,遍历ele并与原集合all对比,保证ele是all的子集
关键步骤:
①sprintf()函数
②strchr()函数
三.代码如下:
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char all[20],ele[100]; 6 int cnt; 7 scanf("%s",all); 8 for(int abc=111;abc < 999;abc ++){ 9 for(int de=11;de < 99;de ++){ 10 int x = abc*(de%10),y = abc*(de/10),z = abc*de; 11 sprintf(ele,"%d%d%d%d%d",abc,de,x,y,z); 12 13 int ret=1;//用来判断是否输出的基准 14 for(int i=0;i < strlen(ele);i ++){ 15 if(strchr(all,ele[i])==NULL)//但凡有不在原集合中的元素... 16 ret=0; 17 } 18 if (ret){ 19 printf("<%d>\n",++cnt); 20 printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n",abc,de,x,y,z); 21 } 22 } 23 } 24 printf("The number of solutions is %d\n",cnt); 25 return 0; 26 }
本文来自博客园,作者:泥烟,CSDN同名, 转载请注明原文链接:https://www.cnblogs.com/Knight02/p/14286127.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY