题解 P1980 【计数问题】

醉梦未苏

2018-08-26 21:51:33

Solution

看了楼下大佬的题解,发现没有人用`snprintf`,故发了这篇蒟蒻题解 #### **`snprintf` **传入四个参数 1. 要写入的字符数组 2. 数组大小(一般用sizeof(ch) 3. 要转的数的格式(和`printf()`类似) 4. 要转的数 ###### 该函数常用来*快捷的* 将数转存于字符数组中,方便好用 再将数转为字符数组后,一位一位的判就**AK**了 ``` #include<bits/stdc++.h> //万能头文件 #define ll long long //宏替换,将来方便 using namespace std; //int 似乎会爆 (逃) ll n,tot=0; ll x; int zh(ll a) { //以字符数组形式存储一个数 char ch[10]; memset(ch,'0',sizeof(ch)); //将%lld形式的a自动写入字符数组 snprintf(ch,sizeof(ch),"%lld",a); ll sum=0; //统计符合的个数 for(int i=0;i<strlen(ch);i++) if(ch[i]==x+'0') sum++; return sum; } int main() { //输入 cin>>n>>x; for(int i=1;i<=n;i++) { //总个数加上当前数i中x的数量 tot+=zh(i); } //输出 cout<<tot; return 0; } ``` > ~~求过~~