为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来。希望能对大家的成绩有所帮助。

今年的最大目标就是能为【一亿技术人】创造更高的价值。


资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

C++

#include<cstdio>
#include<cstring>
int p[200],pp=1,upper;
long long C[1500][500],dp[1000][500],dp2[1000];
const long long mod=1000000007;
void makeC()
{int i,j;for(i=0;i<1500;i++)C[i][0]=1;for(i=1;i<1500;i++)for(j=1;j<500;j++)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
void makeP()
{int i,j;p[0]=2;for(i=3;i<1000;i+=2){for(j=3;j*j<=i;j+=2)if(i%j==0)break;if(j*j>i)p[pp++]=i;}
}
long long calc(int r,int c,int w)
{int i,j,k,upr=r/2,upc=c/2,upw=w/2;long long ans=0;memset(dp2,0,sizeof(dp2));for(i=0;i<=upr;i++)for(j=0;j<=upc;j++)dp2[i+j]=(dp2[i+j]+dp[r][i]*dp[c][j]%mod*C[i+j][i]%mod)%mod;for(i=0;i<=upr+upc;i++)for(k=0;k<=upw;k++)ans=(ans+dp2[i]*dp[w][k]%mod*C[i+k][k]%mod)%mod;return ans;
}
void makeDP()
{int i,j,k;dp[0][0]=1;for(i=2;i<=upper;i++){for(j=0;j<pp;j++)if(p[j]>i)break;else{for(k=1;k<=i/2;k++)dp[i][k]=(dp[i][k]+dp[i-p[j]][k-1])%mod;}}
}
int main()
{int i,j,k,r1,c1,w1,r2,c2,w2,r,c,w;long long ans;makeC();makeP();scanf("%d%d%d",&r,&c,&w);r--;c--;w--;scanf("%d%d%d%d%d%d",&r1,&c1,&w1,&r2,&c2,&w2);r1--,c1--,w1--,r2--,c2--,w2--;upper=r>c?r:c;upper=upper>w?upper:w;makeDP();ans=calc(r,c,w)%mod;ans-=calc(r1,c1,w1)*calc(r-r1,c-c1,w-w1)%mod;ans-=calc(r2,c2,w2)*calc(r-r2,c-c2,w-w2)%mod;if(r1>=r2&&c1>=c2&&w1>=w2)ans+=calc(r2,c2,w2)*calc(r1-r2,c1-c2,w1-w2)%mod*calc(r-r1,c-c1,w-w1)%mod;else if(r1<=r2&&c1<=c2&&w1<=w2)ans+=calc(r1,c1,w1)*calc(r2-r1,c2-c1,w2-w1)%mod*calc(r-r2,c-c2,w-w2)%mod;printf("%lld\n",(ans%mod+mod)%mod);return 0;
}

Java

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {public boolean bushu(int a, List<Integer> list) {boolean q = true;if (!list.contains(a)) {for (int i = 0; i < list.size(); i++) {int b = list.get(i);if (a % b == 0) {q = false;break;}}}if (q) {list.add(a);}return q;}public long niyuan(long a, long x,long mod)     //这里边做快速幂边取模{long ans = 1;while(x>0) {if((x&1)!=0) ans = (ans * a) %mod;a = (a * a) %mod;x >>= 1;}return ans;}public long all(int x,int y,int z,long[][] dp,long mod,long jiechen[],long niyuan[]) {long[] tmp=new long[x+y+z+1];long all=0;for(int i=1;i<=x;i++) {for(int j=1;j<=y;j++) {long bs=dp[x][i]*dp[y][j]%mod*jiechen[i+j]%mod*niyuan[i]%mod*niyuan[j]%mod;if(bs!=0) {tmp[i+j]=(tmp[i+j]+bs)%mod;all=all+tmp[i+j];}}}long ans=0;for(int i=0;i<=z;i++) {for(int j=0;j<=x+y;j++) {ans=ans+dp[z][i]*tmp[j]%mod*jiechen[i+j]%mod*niyuan[i]%mod*niyuan[j]%mod;ans=ans%mod;}}return ans;}public static void main(String[] args) {// TODO 自动生成的方法存根long[][] dp;int xj[][]= new int[2][3];int zhishu[]=new int[169];long mod=1000000007;List<Integer> list = new ArrayList<Integer>();Main s=new Main();int i1=1;for (int i = 2; i < 1000; i++) {if (s.bushu(i, list)) {zhishu[i1++] = i;}}Scanner in = new Scanner(System.in);int x,y,z;x = in.nextInt();y = in.nextInt();z = in.nextInt();for (int i = 0; i < 2; i++) {for (int j = 0; j < 3; j++) {xj[i][j] = in.nextInt();}}int max=Math.max(x,Math.max(y, z));long[] jiechen=new long[max*3+1];long[] niyuan=new long[max*3+1];jiechen[1]=1;jiechen[0]=1;niyuan[1]=1;niyuan[0]=1;for(int i=2;i<max*3+1;i++) {jiechen[i]=(jiechen[i-1]*i)%mod;}for(int i=2;i<max*3+1;i++) {niyuan[i]=s.niyuan(jiechen[i],mod-2, mod);}dp=new long[max+1][max+1];dp[1][0]=1;for(int i=3;i<=max;i++) {for(int j=1;j<=i;j++) {for(int k=1;k<=168&&zhishu[k]<i;k++) {dp[i][j]=(dp[i][j]+dp[i-zhishu[k]][j-1])%mod;}}}long ans=s.all(x, y, z, dp, mod, jiechen,niyuan);ans=(ans-s.all(xj[0][0],xj[0][1],xj[0][2],dp, mod, jiechen,niyuan)*s.all(x-xj[0][0]+1, y-xj[0][1]+1, z-xj[0][2]+1, dp, mod, jiechen,niyuan)%mod+mod)%mod;ans=(ans-s.all(xj[1][0],xj[1][1],xj[1][2],dp, mod, jiechen,niyuan)*s.all(x-xj[1][0]+1, y-xj[1][1]+1, z-xj[1][2]+1, dp, mod, jiechen,niyuan)%mod+mod)%mod;if(xj[0][0]<=xj[1][0]&&xj[0][1]<=xj[1][1]&&xj[0][2]<=xj[1][2]) {ans=(ans+s.all(xj[0][0], xj[0][1],xj[0][2], dp, mod, jiechen,niyuan)*s.all(xj[1][0]-xj[0][0]+1, xj[1][1]-xj[0][1]+1,xj[1][2]-xj[0][2]+1, dp, mod, jiechen,niyuan)%mod*s.all(x-xj[1][0]+1, y-xj[1][1]+1,z-xj[1][2]+1, dp, mod, jiechen,niyuan)%mod)%mod;}if(xj[0][0]>=xj[1][0]&&xj[0][1]>=xj[1][1]&&xj[0][2]>=xj[1][2]) {ans=(ans+s.all(xj[1][0], xj[1][1],xj[1][2], dp, mod, jiechen,niyuan)*s.all(xj[0][0]-xj[1][0]+1, xj[0][1]-xj[1][1]+1,xj[0][2]-xj[1][2]+1, dp, mod, jiechen,niyuan)%mod*s.all(x-xj[0][0]+1, y-xj[0][1]+1,z-xj[0][2]+1, dp, mod, jiechen,niyuan)%mod)%mod;}System.out.println(ans);}
}

蓝桥杯官网 试题 PREV-253 历届真题 质数行者【第十一届】【决赛】【研究生组】【C++】【Java】两种解法相关推荐

  1. 蓝桥杯官网 试题 PREV-61 历届真题 装饰珠【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  2. 蓝桥杯官网 试题 PREV-240 历届真题 答疑【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  3. 蓝桥杯官网 试题 PREV-109 历届真题 扫地机器人【第十届】【省赛】【研究生组】【C++】【Java】【Python】三种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  4. 蓝桥杯官网 试题 PREV-265 历届真题 砝码称重【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  5. 【蓝桥杯官网试题 - 历届试题】格子刷油漆(dp)

    题干: 问题描述 X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆. 你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但 ...

  6. 【蓝桥杯官网试题 - 历届试题】小朋友排队(逆序数,树状数组)

    题干: 问题描述 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的程度.开始的时候,所有小朋友的不高兴程度都是0. 如果某 ...

  7. 【蓝桥杯官网试题 - 历届试题】发现环(dfs+并查集,或无向图tarjan判环,无向环,或拓扑排序)

    题干: 问题描述 小明的实验室有N台电脑,编号1~N.原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络.在树形网络上,任意两台电脑之间有唯一的路径相连. 不过在最近一次维护网络时,管理员 ...

  8. 【蓝桥杯官网试题 - 真题训练】生命之树(树形dp)

    题干: 在X森林里,上帝创建了生命之树. 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值. 上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存 ...

  9. 【蓝桥杯官网试题 - 基础练习】 矩形面积交 (几何)

    题干: 问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入格式 输入仅包含两行,每行描述一个矩形. ...

  10. 【蓝桥杯官网试题 - 算法训练 】K好数(线性dp与优化)

    题干: 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.2 ...

最新文章

  1. 【H2645】H.264的宏块和H.265的编码树单元总结
  2. Dell工作站UEFI与BIOS,AHCI与RAID模式
  3. 【uni-app】富文本控件:百度小程序上uParse无法正确显示
  4. Redis常见问题及其一些重点知识总结
  5. C++再议构造函数及复制构造函数深度复制
  6. 形容女人的词语大全(坏与好)
  7. word for Mac 符号插入
  8. 天猫旺铺装修的一些特殊代码 【持续收集中...】
  9. ERstudio导入mysql脚本生成rtf文档
  10. C语言 java 判断闰年,一个月有多少天
  11. 仿9GAG制作过程(一)
  12. 优先使用组合而不使用继承
  13. python爬取豆瓣电影信息_Python爬虫入门 | 爬取豆瓣电影信息
  14. [转] 两篇关于flash 职业和webgame的文章
  15. Discuz!门户列表页,文章中无图片时,随机选择一张作为封面
  16. 亲历:IT 从业者避免猝死攻略 v1.0
  17. 微信多开软件苹果版_微信pc版,多开,防撤回,完美无风险!
  18. 追觅、小狗、戴森吸尘器对比测评,让你了解哪款最好用
  19. 圆形标定板的图像校正
  20. 开始为Oracle 10g的OCA认证做准备,先从1z0-007开始~

热门文章

  1. linux镜像文件包括,关于镜像文件的详细介绍
  2. 北京理工大学c语言课后答案,《北京理工大学C语言教材习题答案》.doc
  3. html货币相关符号
  4. 初装Windows11无法打开Windows安全中心主界面
  5. python人工智能-图像识别
  6. 精品软件 推荐 常用软件 游戏的 运行库 下载 合集 3D game 玩游戏的一定要收藏一下。...
  7. 简述ip地址的abc类如何划分_IP地址ABC三类划分详细内容记录
  8. 利用matlab采用ADMM算法对稀疏信号进行复原
  9. 二次元《尤里国简介》
  10. 串口485接法图_RS485接线的正确原理图