社区讨论

过了样例但是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 条回复,欢迎继续交流。

正在加载回复...