6 条题解
-
4
#include <bits/stdc++.h> using namespace std; const int mods=1e9+7; string s; long long cnt,sum,len,num; int main(){ getline(cin,s); len=s.length(); for (int i=0;i<len;i++){ if (s[i]==' '){ cnt++; sum=(num+sum)%mods; num=0; continue; } num=(num*10+(s[i]-'0'))%mods; } cout<<cnt<<" "<<(sum+num)%mods; return 0; }
-
3
#include<bits/stdc++.h> using namespace std; const int mod = 1e9+7; string s; // space为空格数量(没让取模),sum为求和结果,len为输入的数组长度,num为等待加入sum的数字 long long space,sum,len,num; // 不开long long见祖宗QwQ ··· ··· getline(cin,s); len=s.length(); // 节省时间 for(int i=0;i<len;i++){ if(s[i]==' '){ space++; sum=(num+sum)%mod; // 求和并及时取模 num=0; continue; // 直接进入下个循环,不执行num的赋值语句 } // 虽然是实时取模,但是还是有可能有一个时刻数据范围超出int,然后再被取模,导致WA num=(num*10+(s[i]-'0'))%mod; // 把num乘10后腾出各位然后加上s[i]的整数形式并及时取模 } sum=(sum+num)%mod; // 由于在最后一个循环不会遇上空格,所以sum的赋值不会执行,需要补一个 cout<<space<<" "<<sum; ···
-
2
输入带空格的字符串
当需要读取一行包含空格的字符串时,可以使用
getline(cin, s);
的方式,读入一整行到字符串 中。取余(模运算)
以下等式都是成立的
(a + b) % c == (a % c + b % c) % c (a * b) % c == ((a % c) * (b % c)) % c (a * b + x * y) % c == ( ((a % c) * (b % c)) % c + ((x % c) * (y % c)) % c ) % c
而一个十进制整数 ,因此可以用下面程序中的方法处理。
getline(cin, s); int cnt, now, ans; cnt = now = ans = 0; for (int i = 0; i < s.length(); i++) { if (s[i] == ' ') { cnt++; ans = (ans + now) % MODNUM; now = 0; } else now = (now * 10 + s[i] - '0') % MODNUM; } ans = (ans + now) % MODNUM; cout << cnt << " " << ans << endl;
-
-13
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 1227
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 397
- 已通过
- 155
- 上传者