CF1352A题解

ccbb0530

2020-05-16 17:27:26

Solution

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的算法或运用字符串来解。