记一个函数:sprintf

问题描述

从键盘输入一个数字,输出所有的形如ABC*DE的一个算式,且满足ABCDE里面的所有数字都在我们输入的数字集合中。

在这个算式中,每行数字都属于2357中的一个数字。


Algorithm

如果是在以前,我肯定会这么做:

首先枚举这两个数ABC和DE,然后判断他们算式相乘的两个数以及结果,不断模10来判断是否每一个数字都属于输入的数字。

但是我发现了一个很厉害的函数:sprintf

简单来说,sprintf可以将数字储存到一个字符串里面。

此外,还有另一个函数:strchr

它的作用是检查某一个元素在一个字符串里第一次出现的位置,如果有,返回一个指针,反之返回NULL。

现在看完整代码。


AC

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4
 5 using namespace std;
 6
 7 int fun()
 8 {
 9     char a[11], temp[99];
10     int c = 0;
11     cin>>a;
12     for(int i=100;i<1000;i++){
13         for(int j=10;j<100;j++){
14             sprintf(temp, "%d%d%d%d%d", i, j, (j%10)*i, (j/10)*i, i*j);
15             bool f = true;
16             for(int k=0;k<strlen(temp);k++){
17                 if(strchr(a, temp[k]) == NULL){
18                     f = false;
19                     break;
20                 }
21             }
22             if(f){
23                 printf("<%d>\n", ++c);
24                 printf("%5d\n", i);
25                 printf("X%4d\n", j);
26                 printf("-----\n");
27                 printf("%5d\n", i*(j%10));
28                 printf("%4d\n", i*(j/10));
29                 printf("-----\n");
30                 printf("%5d\n", i*j);
31             }
32         }
33     }
34     if(!c) cout<<"NULL, pleas input next..."<<‘\n‘;
35     return 0;
36  }
37
38 int main()
39 {
40     while(1)
41     {
42         fun();
43     }
44
45     return 0;
46 }

原文地址:https://www.cnblogs.com/mabeyTang/p/10356107.html

时间: 2024-10-05 04:58:13

记一个函数:sprintf的相关文章

[C/C++基础] C语言常用函数sprintf和snprintf的使用方法

Sprintf 函数声明:int sprintf(char *buffer, const char *format [, argument1, argument2, -]) 用途:将一段数据写入以地址buffer开始的字符串缓冲区 所属库文件: <stdio.h> 参数:(1)buffer,将要写入数据的起始地址:(2)format,写入数据的格式:(3)argument:要写的数据,可以是任何格式的. 返回值:实际写入的字符串长度 说明:此函数需要注意缓冲区buffer溢出,要为写入的arg

记一个界面刷新相关的Bug

今天遇到一个比较有意思的bug, 这里简单记录下. Bug的症状是通过拖拉边框把我们客户端主窗口拖小之后,再最大化,会发现窗口显示有问题, 看起来像是刷新问题, 有些地方显示的不对了. 这里要说明的是我这里的主窗口是非常复杂的窗口, 里面集成了很多组件(cpmponent),有很多层的子窗口. 这个问题只有在特定条件下才会发生, 正常情况下都是好的. 遇到这种问题,我们怎么处理? 首先当然是观察症状, 究竟是刷新问题, 还是Layout出错了. 我们可以通过Spy++查看窗口层次是不是正确, 窗

你好,C++(30)“大事化小,小事化了”5.4.3 工资程序成长记:函数

5.4.3 工资程序成长记:函数 自从上次小陈“程序员”的工资程序得到老板的夸奖,口头许诺给他涨工资以后,老板再也没有找过他,涨工资的事自然也就没有下文了.这天,老板又突然召他去办公室.这下可把小陈高兴坏了,心想盼星星盼月亮终于盼来涨工资这一天了.于是赶紧到了老板的办公室.可他刚进门就发现情况有点不对,只见老板阴沉着脸坐在他那张硕大的老板椅上,满头大汗,手指还在不停地敲击着键盘输入着什么.一见到小陈进来,就好像见到仇人似的,劈头盖脸地来了一句: “小陈啊,你这个工资程序怎么搞的,怎么每次都要重新

记C函数指针的“小坑”

今天遇到一个C函数指针的小坑,索性记下来. 我在a.c 文件里面,引用b.c 文件的函数声明作为指针引用 比如在a.c生命一个函数指针 typedef void (*free)(void *val) fun b.c中的有一个函数 void char_free(void* val){ if (val) LIST_FREE(val); } 但是当我编译的时候 编译器报错:‘char_free’ undeclared 我就纳闷了,一般情况下,在同一可执行程序的源文件中,只要函数不声明为static,其

记一个小错误:&#39;numpy.ndarray&#39; object is not callable

错误在于mfcc是已经定义的函数,所以变量名改为wav_mfcc,问题就解决了. 参考博客: https://blog.csdn.net/Olaking/article/details/43199003 记一个小错误:'numpy.ndarray' object is not callable 原文地址:https://www.cnblogs.com/yuren1998/p/11558700.html

day14 带函数的装饰器、多个装饰器装饰一个函数

一.带参数的装饰器:------开关 __author__ = 'Administrator' F=True def outer(F): def wap(fun):#gg def inner(*args,**kwargs): if F: print("inner before") ret=fun(*args,**kwargs)#gg() print("inner after") else: ret=fun(*args,**kwargs) return ret ret

实现一个函数clone,使JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制. 1 /** 对象克隆 2 * 支持基本数据类型及对象 3 * 递归方法 */ 4 function clone(obj) { 5 var o; 6 switch (typeof obj) { 7 case "undefined": 8 break; 9 case "string": o = obj + &q

c语言:写一个函数建立一个有3名学生数据的单向动态链表

写一个函数建立一个有3名学生数据的单向动态链表. 解:程序: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { long num; float score; struct Student *next; }; int n; struct Student *creat(void)//定义函数返回一个指向链表头的指针 { struct Student *head

js Array的一个函数indexOf( )

js Array的一个函数:indexOf(i) var  a = [1,2,3,4]; a.indexOf(2) 返回-1则表示2不在a中,反之则2为a的一个元素 此方法可以用来删除掉Array中的重复元素