社区讨论
过了样例但是15分,求举出反例证明我的思路不对~
P10262[GESP样题 六级] 亲朋数参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m0cgmycn
- 此快照首次捕获于
- 2024/08/27 21:25 2 年前
- 此快照最后确认于
- 2025/11/04 22:14 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
char c[1000010];
long long f[1000010];
int main()
{
//f[i]表示前i个字符一共有多少个子串满足条件
ios::sync_with_stdio(0);
int n=0,p;
cin>>p;
while(cin>>c[++n]); n--;
for(int i=1;i<=n;i++)
{
int t=c[i]-'0';//提取个位
if(t%p!=0) f[i]=f[i-1];//除不尽就继承上一个
else f[i]=f[i-1]+i;//能除尽就是f[i-1]加上包含第i个数的连续子串
/*
如:
1
2 2,1-2
3 2,1-2
4 2,1-2, 4,3-4,2-3-4,1-2-3-4
2 2,1-2, 4,3-4,2-3-4,1-2-3-4, 2,4-2,3-4-2,2-3-4-2,1-2-3-4-2, 一共11个子串符合要求
*/
}
cout<<f[n];
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...