求救 1题 1关(先到先得)
  • 板块灌水区
  • 楼主yangkaiyi
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/8/16 10:31
  • 上次更新2024/8/16 11:03:32
查看原帖
求救 1题 1关(先到先得)
1226849
yangkaiyi楼主2024/8/16 10:31

第一题: 题目描述 小乐得到了n张牌,第i张牌跟第i-1张牌相邻(2<=i<=n)。

每张牌都有正反两面,每一面上都有一个数字。

一开始小乐把所有的牌正面朝上,接下来小乐会选择其中的任意张牌(也可以是0张)并将它们翻转。

小乐想知道,有多少种翻转的方案,使得:

翻转后,任意两张相邻的牌所展示的数字不相同。

注意:两种方案不同当且仅当翻转的牌不同。

求满足条件的方案数,输出其对998244353取模的结果。

输入 第一行一个整数n(1<=n<=2*10^5),表示小乐拥有n张牌。

接下来n行每行两个整数ai,bi(1<=ai,bi<=10^9),分别表示正面和反面的数字。

输出 一行一个整数,表示方案数。

样例输入 复制 3 1 2 4 2 3 4 样例输出 复制 4 提示 样例解释:四种方案分别是:1 4 3,1 2 3,1 2 4,2 4 3

输入样例2:

4

1 5

2 6

3 7

4 8

输出样例2:

16

第二题: 题目描述

墨水

【题目描述】(moshui.cpp)

有一个数字的一部分被墨水挡住了,小明只知道它原本模13余5,请问这个数原本有几种情况?(这个数字的开头可以有0)

【输入格式】

一行包含一个字符串,包含(0-9和”?”,其中”?”表示被挡住了)长度小于10^5

【输出格式】

一行包含一个整数,表示可能性的数量,答案对10^9+7取余。

【输入样例1】

?44

【输出样例1】

1

【输入样例2】

??2??5

【输出样例2】

768

【样例解析】

样例1中只有044一种可能。

输入 输出 提示

这是我第二题的代码:

#include <bits/stdc++.h>
#define int long long
#pragma GCC optimize("02")
using namespace std;
const int mod=1e9+7;
int i,n,j,aa,f[100010][20];char a[200010];
main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL);cout.tie(NULL);
	cin>>a+1;n=strlen(a+1);f[1][0]=f[1][a[1]]=1;
	for(i=1;i<=n;i++)
		if(a[i]!='?'){
			aa=a[i]-48;
			for(j=0;j<=12;j++)
				f[i][(aa*10+j)%13]+=f[i-1][j],f[i][(aa*10+j)%13]%=mod;
		}
		else
			for(j=0;j<=12;j++)
				for(aa=0;aa<=9;aa++)
					f[i][(aa*10+j)%13]+=f[i-1][j],f[i][(aa*10+j)%13]%=mod;
	cout<<f[n][5];
	return 0;
}
2024/8/16 10:31
加载中...