题目描述

给定了一个正整数 \(N\)。有多少种方法将 \(N\) 分解成为四个质数 \(a,b,c,d\)的和。

例如:

\(9=2+2+2+3=2+2+3+2=2+3+2+2=3+2+2+2\),故共有 \(4\) 种方法将 \(9\) 分解成为四个整数。

输入格式

本题多组数据测试:

第一行读入一个整数 \(T\) 表示数据组数。

接下来共 \(T\) 行,每行包含一个正整数 \(N\)。

输出格式

共 \(T\) 行,每行一个整数表示答案。

样例

样例输入

2
9
10

样例输出

4
6

数据范围与提示

对于 \(10\%\) 的数据,\(N \leq 10\)。

对于 \(40\%\) 的数据,\(N \leq 100\)。

对于 \(70\%\) 的数据,\(N \leq 1000\)。

对于 \(1000\%\) 的数据,\(T \leq 10,N \leq 100000\)。

分析

可以设 \(f[i][j]\) 为当前用了 \(j\) 个质数拼出 \(i\) 的方案数

状态数太多转移不动

可以改为先求出两两质数的和,再用这个和去拼出想要的数

代码

#include<cstdio>
#define rg register
inline int read(){
rg int x=0,fh=1;
rg char ch=getchar();
while(ch<'0' || ch>'9'){
if(ch=='-') fh=-1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*fh;
}
const int maxn=1e5+5;
int t,n,pri[maxn];
bool not_pri[maxn];
long long f[maxn][4];
void pre(int now){
not_pri[0]=not_pri[1]=1;
for(rg int i=2;i<=now;i++){
if(!not_pri[i]) pri[++pri[0]]=i;
for(rg int j=1;j<=pri[0] && 1LL*i*pri[j]<=now;j++){
not_pri[i*pri[j]]=1;
if(i%pri[j]==0) break;
}
}
for(rg int i=1;i<=pri[0];i++){
f[pri[i]][1]=1;
}
for(rg int o=2;o<=2;o++){
for(rg int i=1;i<=now;i++){
if(f[i][o-1]){
for(rg int j=1;j<=pri[0];j++){
if(i+pri[j]<=now){
f[i+pri[j]][o]+=f[i][o-1];
} else {
break;
}
}
}
}
}
}
long long ans;
int main(){
t=read();
pre(100000);
while(t--){
n=read();
ans=0;
for(rg int i=2;i<=n;i++){
ans+=f[i][2]*f[n-i][2];
}
printf("%lld\n",ans);
}
return 0;
}

模拟赛41 A. 四个质数的和的更多相关文章

  1. 常州模拟赛d2t1 小X的质数

    题目背景 小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的 情感.小 X 认为,质数是一切自然数起源的地方. 题目描述 在小 X 的认知里,质数是除了本身和 1 以外,没有其他因 ...

  2. 【HHHOJ】ZJOI2019模拟赛(十四)03.12 解题报告

    点此进入比赛 得分: \(50+5+24=79\) 排名: \(Rank\ 2\) \(Rating\):\(+79\) \(T1\):[HHHOJ197]古明地(点此看题面) 基本上全部时间都用来想 ...

  3. NOIp模拟赛三十四(yxq供题)

    毒瘤yxq! 毒瘤yxq! 毒瘤yxq! 据yxq自己说,林导让他出题的时候要求是“代码量少”,“思维难度高”,“不涉及太复杂的算法”,而且“最好要让myh有一题做不出来”(狙击myh).于是今天的题 ...

  4. NOI.AC NOIP模拟赛 第四场 补记

    NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...

  5. NOIp2018模拟赛四十二

    今天看标题终于回到了“NOIP模拟赛”,十分高兴啊! 然后一打开题目: ********** 所以今天又是一场NOIPlus模拟赛(微笑) 成绩:0+70+0=70 A题想了个贪心被myh两分钟cha ...

  6. 「CSP-S模拟赛」2019第四场

    「CSP-S模拟赛」2019第四场 T1 「JOI 2014 Final」JOI 徽章 题目 考场思考(正解) T2 「JOI 2015 Final」分蛋糕 2 题目 考场思考(正解) T3 「CQO ...

  7. PKUSC 模拟赛 day1 下午总结

    下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...

  8. 2017-9-22 NOIP模拟赛[xxy][数论]

    XXY 的 的 NOIP 模拟赛 4 4 —— 数学专场 A Description定义 f(x)表示 x 的约数和,例:f(12)=1+2+3+4+6+12=28给出 x,y,求Σf(i),i∈[x ...

  9. NOI.AC: NOIP2018 全国模拟赛习题练习

    闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n ...

随机推荐

  1. JUC---03Lock(一)ReentrantLock

    1.什么是锁 在以前实现多线程的同步操作时,都是添加synchronized关键字或者synchronized代码块:而锁实现提供了比使用同步方法和语句可以获得的更广泛的锁操作.它们允许更灵活的结构, ...

  2. exe打包成安装文件(界面美观)

    前言 在开发windows桌面应用过程中,软件交付时,一般都是交付安装包. 安装文件的优点 显得更正规,安装界面也可展示软件特点介绍,可自动生成桌面图标等: 安装包体积要比软件小,方便下载. 探索之路 ...

  3. Java学习的第二十八天

    1.Scanner类 序列化 将实体类标注为可序列化 2.不明白 3.明天学习反序列化,transient关键字,序列化一组对象

  4. java获取类路径下文件的绝对路径

    获取文件绝对路径 在idea中,默认的当前路径是project的根路径,如果你使用idea的默认路径,只要离开idea换到其他位置,可能当前路径就不是project的根路径了. 使用一下通用方式的前提 ...

  5. Netty源码解析 -- ChannelPipeline机制与读写过程

    本文继续阅读Netty源码,解析ChannelPipeline事件传播原理,以及Netty读写过程. 源码分析基于Netty 4.1 ChannelPipeline Netty中的ChannelPip ...

  6. js 元素添加多个监听

    function addListener(element,e,fn){     if(element.addEventListener){         element.addEventListen ...

  7. 【SpringBoot】09.SpringBoot整合Freemarker

    SpringBoot整合Freemarker 1.修改pom文件,添加坐标freemarker启动器坐标 <project xmlns="http://maven.apache.org ...

  8. leetcode113:sudoku-solver

    题目描述 请编写一个程序,给数独中的剩余的空格填写上数字 空格用字符'.'表示 假设给定的数独只有唯一的解法 这盘数独的解法是: 红色表示填上的解 Write a program to solve a ...

  9. .NET 5.0正式发布,功能特性介绍(翻译)

    本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...

  10. 08flask中get和post请求。

    1,get请求. 使用场景:获取信息并没有对服务器的数据或者资源进行修改,则用get. 传参:get请求传参是放在URL中,通过"?"的形式指定键值对. 2,post请求. 使用场 ...