luoguP1036 选数 暴力AC题解(非正解)

俗话说得好:暴力出奇迹,打表拿省一。 对于一些暴力就能拿分的题,暴力就好啦QWQ


题目描述

 

输入格式

输出格式

输入输出样例

定义变量

我们令输入的第一行分别为 n , k ;

第二行的数由 a [ 25 ] 来存储。

long long n,k,a[];

题目分析

1)制作素数筛子

  看完这个题之后,我们需要用到一个判断素数的筛子。可以定义一个函数,如果是素数就返回1,否则返回0.

  判断一个数是不是素数的方法也有很多种。我用的属于直观判断法。

  根据定义,因为质数除了1和本身之外没有其他约数。我们知道,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),据此,代码中并不需要遍历到 n-1 ,遍历到 sqrt(n) 即可,因为若sqrt(n)左侧找不到约数,那么右侧也一定找不到约数。

bool prime(long long y)
{
if (y==||!y) return ;
//判断1和0的情况 for (int i=;i<=sqrt(y);i++)
if (!(y%i)) return ;
//判断 y%i 是不是=0,如果值为0说明能被整除,不是素数 return ; //遍历完之后如果没有返回0,则返回1.
}

  这个“素数筛子”就做好了。


2)暴力循环

  因为是判断 k 个数的和是不是素数,k的范围也不是特别大( 1 ≤ n ≤ 20 ,k < n )

所以,我们可以用20个 if ,从k=1开始暴力,一直到k=20。在暴力的过程中用一个计数器( tt ) ,来计算是素数的个数。

long long tt=;

   暴力也要有方法,不能无脑暴力,不然喜提TLE……

  k=1时:

  只需遍历一遍所有的数,看看它本身是不是素数。 

  此时用到了我们刚才制作的素数筛子。

  分析一下:如果 a [ i ] 为素数,那么prime ( a [ i ] ) 的值就为1,if 满足条件,执行下面的 tt++ 。

  相反的,如果 a [ i ] 不是素数,那么prime ( a [ i ] ) 的值就为0,if 不满足条件,什么都不执行,继续 for 循环直到 i>n。

    if(k==)
for(int i=;i<=n;++i)
{
if(prime(a[i]))
tt++;
}

  k=2时:

  这时 a数组 有2个数组成最终要进行判断的数,我们可以用2层循环,把所有可能的情况都遍历一遍(暴力枚举),如果这两个数的和为素数,计数器+1.

  注意:此时第二层循环的变量为第一次循环变量值+1.( int b = i + 1 , ……那里)这样可以防止出现重复判断的情况,节省了一半的时间。

  另外,判断素数时,prime 括号内的部分为 a [ i ] 与 a [ b ] 之和。

   if(k==)
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
{
if(prime(a[i]+a[b]))
tt++;
}

  k=3时:

   同理。3个数相加,遍历一遍,不要忘记下层循环为上层+1.

  在判断素数的时候也不要忘记 prime ( a [ i ] + a [ b ] + a [ c ] )。

     if(k==)
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
{
if(prime(a[i]+a[b]+a[c]))
tt++;
}

 对!就这样!一鼓作气!打出20个 if 吧!……


AC 代码

链接:https://www.luogu.com.cn/record/35531313

 瞧瞧这速度!(我想大概 也许可能 是数据有水分)

 /*---------------------------------
*Title number: luoguP1036 选数
*Creation date: 2020-07-22 afternoon
*Author: EdisonBa
*-------------------------------*/
#define fastcall __attribute__((optimize("-O3")))
#pragma GCC optimize(2)
#include<iostream>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<cstring>
#include<iomanip>
#include<algorithm>
#include<map>
#define ll long long
#define itn int
using namespace std; ll n,k,a[],tt=; bool prime(long long y)
{
if (y==||!y) return ;
for (int i=;i<=sqrt(y);i++)
if (!(y%i)) return ;
return ;
} int main()
{
cin>>n>>k;
for(int i=;i<=n;++i)
{
cin>>a[i];
} if(k==)
{
for(int i=;i<=n;++i)
{
if(prime(a[i]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
{
if(prime(a[i]+a[b]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
{
if(prime(a[i]+a[b]+a[c]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
{
if(prime(a[i]+a[b]+a[c]+a[d]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
for(int t=s+;t<=n;++t)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]+a[t]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
for(int t=s+;t<=n;++t)
for(int u=t+;u<=n;++u)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]+a[t]+a[u]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
for(int t=s+;t<=n;++t)
for(int u=t+;u<=n;++u)
for(int v=u+;v<=n;++v)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]+a[t]+a[u]+a[v]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
for(int t=s+;t<=n;++t)
for(int u=t+;u<=n;++u)
for(int v=u+;v<=n;++v)
for(int w=v+;w<=n;++w)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]+a[t]+a[u]+a[v]+a[w]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
for(int t=s+;t<=n;++t)
for(int u=t+;u<=n;++u)
for(int v=u+;v<=n;++v)
for(int w=v+;w<=n;++w)
for(int x=w+;x<=n;++x)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]+a[t]+a[u]+a[v]+a[w]+a[x]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
for(int t=s+;t<=n;++t)
for(int u=t+;u<=n;++u)
for(int v=u+;v<=n;++v)
for(int w=v+;w<=n;++w)
for(int x=w+;x<=n;++x)
for(int y=x+;y<=n;++y)
{
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]+a[t]+a[u]+a[v]+a[w]+a[x]+a[y]))
tt++;
}
}
if(k==)
{
for(int i=;i<=n;++i)
for(int b=i+;b<=n;++b)
for(int c=b+;c<=n;++c)
for(int d=c+;d<=n;++d)
for(int e=d+;e<=n;++e)
for(int f=e+;f<=n;++f)
for(int g=f+;g<=n;++g)
for(int h=g+;h<=n;++h)
for(int o=h+;o<=n;++o)
for(int p=o+;p<=n;++p)
for(int q=p+;q<=n;++q)
for(int r=q+;r<=n;++r)
for(int s=r+;s<=n;++s)
for(int t=s+;t<=n;++t)
for(int u=t+;u<=n;++u)
for(int v=u+;v<=n;++v)
for(int w=v+;w<=n;++w)
for(int x=w+;x<=n;++x)
for(int y=x+;y<=n;++y)
for(int z=y+;z<=n;++z) {
if(prime(a[i]+a[b]+a[c]+a[d]+a[e]+a[f]+a[g]+a[h]+a[o]
+a[p]+a[q]+a[r]+a[s]+a[t]+a[u]+a[v]+a[w]+a[x]+a[y]+a[z]))
tt++;
}
}
cout<<tt<<endl;
return ;
114514 }

这是本蒟蒻发表的第二篇题解,继承了第一篇题解的暴力传统。

这是一道橙题,我觉得打这个暴力对付它来说有点小亏。

不过也顺便锻炼了一下自己的耐力和代码能力

既然您认真地看完了,点个关注,推荐一下不香嘛!~

谢谢您的支持!

2020.7.22

EdisonBa

  

luoguP1036 选数 暴力AC题解的更多相关文章

  1. 7.20试机测 T3 阶乘之和 暴力AC题解

    7.20试机测  T3 阶乘之和 暴力AC题解 题外话:此乃本蒟蒻发表的第一篇题解,大家多多关照,支持一下,谢谢 题面 3.阶乘之和(sum.pas/in/out) 问题描述: 给定一个非负整数 n, ...

  2. 【洛谷】P1308 统计单词数-全AC题解(易理解

    弟弟的混乱代码(易理解 大概 思路: 循环b(被找的字符串),遇空格比较两空格间的长度是否与a(需要查找的字符)相等:不相等继续循环:相等比较内容是否相同(倒数比较,不一样直接退出 ,直到比较到第一个 ...

  3. NOIP 2002提高组 选数 dfs/暴力

    1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知 n 个整数 x1,x2,…, ...

  4. BZOJ 3930: [CQOI2015]选数 递推

    3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...

  5. 【BZOJ3530】数数(AC自动机,动态规划)

    [BZOJ3530]数数(AC自动机,动态规划) 题面 BZOJ 题解 很套路的\(AC\)自动机+\(DP\) 首先,如果长度小于\(N\) 就不存在任何限制 直接大力\(DP\) 然后强制限制不能 ...

  6. 【BZOJ3930】选数(莫比乌斯反演,杜教筛)

    [BZOJ3930]选数(莫比乌斯反演,杜教筛) 题面 给定\(n,K,L,R\) 问从\(L-R\)中选出\(n\)个数,使得他们\(gcd=K\)的方案数 题解 这样想,既然\(gcd=K\),首 ...

  7. 【BZOJ2734】【HNOI2012】集合选数(状态压缩,动态规划)

    [BZOJ2734][HNOI2012]集合选数(状态压缩,动态规划) 题面 Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所 ...

  8. 洛谷 [CQOI2015]选数 解题报告

    [CQOI2015]选数 题目描述 我们知道,从区间\([L,H]\)(\(L\)和\(H\)为整数)中选取\(N\)个整数,总共有\((H-L+1)^N\)种方案. 小\(z\)很好奇这样选出的数的 ...

  9. 【BZOJ3930】[CQOI2015]选数 莫比乌斯反演

    [BZOJ3930][CQOI2015]选数 Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律 ...

随机推荐

  1. spring boot admin项目的集成和开发

    Spring Boot Admin是一个Github上的一个开源项目,它在Spring Boot Actuator的基础上提供简洁的可视化WEB UI,是用来管理 Spring Boot 应用程序的一 ...

  2. spring 整合redis集群中使用@autowire无效问题的解决办法

    1.视频参考黑马32期宜立方商城第6课 redis对于的代码 我们先变向一个redis客户端的接口文件 package com.test; public interface JedisClient { ...

  3. 5、struct2使用登陆的时候重定向功能,如果没有登陆,重定向到登陆页面

    1.实现这样一份功能,列如用户在进行某些操作的时候,如果没有登陆重定向到登陆页面 首先:我们创建一个功能操作页面,用户准备在该页面执行某些操作 在index.jsp中 <%@ page lang ...

  4. I/O格式化与运算符

    I/O格式化与运算符 输出函数 Python3 - print() 在Python3中.print()的使用方法如下: >>> # ==== Python3 print() ==== ...

  5. 入门大数据---Flink核心概念综述

    一.Flink 简介 Apache Flink 诞生于柏林工业大学的一个研究性项目,原名 StratoSphere .2014 年,由 StratoSphere 项目孵化出 Flink,并于同年捐赠 ...

  6. win7旗舰版安装 oracle 10g 不能进入图形界面的问题

    前阵子重装了系统,把dell机器自带的win7 64位(家庭版已升级旗舰版,装ORACLE正常)换回了32位系统,前两天因为一些软件开发的问题,需要把以前做的一个系统重新架起来,数据库用的是oracl ...

  7. python三大神器之fabric

    Fabric Fabric是一个python的远程执行shell的库,同时它也是一个命令行工具.它提供了丰富的同 SSH 交互的接口,可以用来在本地或远程机器上自动化.流水化地执行 Shell 命令. ...

  8. 洛谷 P3243 【[HNOI2015]菜肴制作】

    先吐槽一下这个难度吧,评的有点高了,但是希望别降,毕竟这是我能做出来的不多的紫题了(狗头). 大家上来的第一反应应该都是啊,模板题,然后兴高采烈的打了拓补排序的板子,然后搞个小根堆,按照字典序输出就可 ...

  9. mysql 主键自增设置,插入数据就不必再设置了。

    (完)

  10. 面向切面对象AOP

    前言 面向切面编程(思想)AOP Aspect Oriented  Programming,是面向对象基础上 更关注最终目标 而不关注中间的小目标,简而言之,就是我们的目标(例如constroller ...