luogu梦中的统计
https://www.luogu.org/problemnew/show/P1554
我一上来果断骗分,因为一开始没想到怎么处理取下三位及以上数的每一位,然后我就看了题解。O(∩_∩)O~
题解的思路是用循环处理,每次取最后一位,然后将整个数减少一位。当数不能再减少时,跳出循环。^_^
看代码咯
#include<iostream> #include<cstdio> using namespace std; int a[11]; int m,n,k; int main() { scanf("%d%d",&m,&n); for(int i=m;i<=n;i++) { k=i; do { a[k%10]++; k=k/10; }while(k); } for(int j=0;j<=9;j++) printf("%d ",a[j]); return 0; }
~\(≧▽≦)/~啦啦啦做完了
开心O(∩_∩)O~~
(⊙o⊙)哦!对了,再写一个题解上的字符串做法。字符串啊啊啊O(≧口≦)O!
题解的做法中用到了sprintf这个函数,先讲一下sprintf函数的用法吧(⊙v⊙)
这当然不是原创https://zhidao.baidu.com/question/757355598366787604.html
还有一个blog挺好的
1.sprintf函数的头文件是#include<cstdio>
2.sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。
3.可以动态指定,需要截取的字符数
char s1={'A','B','C'};
char s2={'T','Y','x'};
sprintf(str,"%.*s%.*s",2,s1,3,s2);
sprintf(s, "%*.*f", 10, 2, 3.1415926);
4.可以打印出i的地址:sprintf(s, "%p", &i);
相当于sprintf(s, "%0*x", 2 * sizeof(void *), &i);
5.sprintf的返回值是字符数组中字符的个数,即字符串的长度,不用再调用strlen(s)求字符串的长度。
6.比如:sprintf(buffer, "%d", 123456);执行后buffer即指向字符串“123456”
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[1001]; int m,n,a[11]; int main() { scanf("%d%d",&m,&n); for(int i=m;i<=n;i++) { sprintf(s,"%d",i); for(int k=0;k<strlen(s);k++) { a[(s[k]-'0')]++; } } for(int j=0;j<=9;j++) printf("%d ",a[j]); return 0; }
♪(^∇^*)啦啦啦~\(≧▽≦)/~啦啦啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现