CF1352A题解
ccbb0530
2020-05-16 17:27:26
CF第一次出现Div.4 ~~真的很简单哎~~
先说下A题,洛谷题目[传送门](https://www.luogu.com.cn/problem/CF1352A)
,CF[原题](http://codeforces.com/problemset/problem/1352/A)
这道题有两种做法,先说第一种(也是比赛中写的一种)
(1)可以将它使用字符串读入,若那一位不是“0”,
则圆数个数+1。接着再扫一遍,不是“0”的位数,全部输出他的十进制表示法。如:5009中5输出5000。
上代码
```cpp
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int T;
cin>>T;
while (T--){
string s;
cin>>s;
int t=0;
for (int i=0;i<s.size();++i){
if (s[i]=='0')
continue;
else
t++;
}
cout<<t<<endl;
for (int i=0;i<s.size();++i){
if (s[i]=='0')
continue;
else{
cout<<s[i];
for (int j=i+1;j<s.size();++j)
cout<<"0";
cout<<" ";
}
}
cout<<endl;
}
}
```
但是这不是最简单的做法。
(2)直接模拟,运用%求出每一位
首先我们要推一下如何运用%求出当前这一位。
```cpp
int n;
cin>>n;
while (n){
cout<<n%10<<endl;
n/=10;
}
```
这是最关键的求出当前这一位是什么,接着用vector储存(如果不是0,求存进去),最后输出
由于这个方法有大佬已经写过了,所以在这里就不写了。
总结一下:这道题运用数学中mod的算法或运用字符串来解。