2019CCPC江西省赛(重现赛)在hdu进行
据说很简单
因为现场有多个队伍AK
然鹅
我在40分钟内AC两题之后 就卡在概率题 (后来就没做题目emmm)
先放官方题解
然后慢慢补题
嗯!
题目:
https://pan.baidu.com/s/1nYWq8dWcS9csJDXGWTqHmA 提取码: 8pg4 复制这段内容后打开百度网盘手机App,操作更方便哦
题解:
https://pan.baidu.com/s/1bISMx_yH9yb5NJVirZQ61w 提取码: 4kn4 复制这段内容后打开百度网盘手机App,操作更方便哦
目录
K.签到题
解方程
已知 x = a+b y =a-b 求a*b 可以得知 a = (x+y)/2 b = x-a
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
int x,y;
int a,b;
scanf("%d%d",&x,&y);
a = (x+y)/2;
b = (x-a);
printf("%d\n",a*b);
return 0;
}
F.签到题2
因为只需要 a,v,i,n 四种字母
先判断这四种字母出现的个数
如果本身没有达到存在这四种字母 则不可能构成avin 答案是 0/1
达到四种字母都存在 则再次计算可能出现avin的次数
PS:要注意分子与分母是否可以同分 (取分子分母得到公因子 同时除掉公因子
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <math.h>
using namespace std;
int gcd(int a,int b)
{
if (b==0)return a;
return gcd(b,a%b);
}
int a[30];
int main()
{
int t,x=0,y=0,sum=0;
char m;
while (~scanf("%d", &t)) {
getchar();
memset(a, 0, sizeof a);
for (int i = 0; i < t; i++) {
scanf("%c", &m);
a[m - 'a' + 1] ++;
}
for (int i = 1; i <= 26; i++) {
if (a[i] > 0) {
sum =sum+a[i];
}
}
x = a[1]*a[9]*a[14]*a[22];
y = pow(sum,4);
if (x>0)
{
if (gcd(x,y)>1)
printf("%d/%d\n",x/gcd(x,y),y/gcd(x,y));
else printf("%d/%d\n",x,y);
}
else printf("0/1\n");
}
return 0;
}
H.数学题
在【1,n】之间任取一个数 R, 然后在【1,R】中任取一个数得到 L, 得到区间【L1,R1】
再任取一次,得到区间【L2,R2】,求两区间有交集的概率对1e9+7取模
首先 理解什么是逆元 以及如何线性求逆元