题解 P1980 【计数问题】
醉梦未苏
2018-08-26 21:51:33
看了楼下大佬的题解,发现没有人用`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;
}
```
> ~~求过~~