ACM集训的Training Day 3的A题。。。
A. 等差数列
一.题目描述:
一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列。
在这个问题中a是一个非负的整数,b是正整数。写一个程序来找出在双平方数集合(双平方数集合是所有能表示成p的平方 + q的平方的数的集合,其中p和q为非负整数)S中长度为n的等差数列。
二.格式
时间限制: 5 秒
题目名称: ariprog
输入格式:
(file ariprog.in)
第一行: N(3<= N<=25),要找的等差数列的长度。
第二行: M(1<= M<=250),搜索双平方数的上界0 <= p,q <= M。
输出格式:
(file ariprog.out)
如果没有找到数列,输出“NONE”。
如果找到了,输出一行或多行, 每行由二个整数组成:a,b。 a为等差数列的第一个值,b为等差数列的公差。
这些行应该先按b排序再按a排序。
所求的等差数列将不会多于10,000个。
三.
样例输入:
5
7
样例输出:
1 4
37 4
2 8
29 8
1 12
5 12
13 12
17 12
5 20
2 24
分析:
对于限制时间比较宽松的这个题呀~~~~~暴力穷举就可以了~~~~~~
按照题意,先是确定所有的双平方数,然后根据给的上限,把范围内的双平方数储存起来。
(哎呀,好懒啊,不想写了=.=)
我的代码里有注释。。。以后有闲时间了再来补充吧。╮(╯▽╰)╭
不说了,上代码。
#include<iostream>
#include<cstring>
using namespace std;
bool is[]; //记录谁是双平方数的bool数组
int a[]; //由于所给上限是250,则最大的数为250*250*2
int main(){ //n是给的等差数列的长度,top是所给搜索双平方数的上界
int n,top,k=,tole,num=; //k初始化为0,最后为的储存双平方数数组的总长度。
scanf("%d%d",&n,&top); //tole为公差 ,num记录满足条件的数组的个数 ,用于判断是否在后面的bool f=0时
for(int i=;i<=top;i++) //把所有的数是否是双平方数记录下来
for(int j=;j<=top;j++)
is[i*i+j*j]=; //标记范围内的所有双平方数
for(int i=;i<=top*top*;i++) //把上限范围内的双平方数储存起来
if(is[i])
a[k++]=i; //一共有k个数 ,a[k]数组储存所有的双平方数
int maxt=(top*top*)/(n-); //前面先定义了公差为tole,maxt为公差的最大范围 前面的num为记录等差数列的个数
for (tole=;tole<=maxt;tole++){ //tole为公差 ,a[i]为首项 ,对于每一个可能的公差,去检查对于a[i]每一个元素,是否有等差数列的可能
for(int i=;a[i]+(n-)*tole<=top*top*&&i<k;i++){ //a[i]+(n-1)*l为第i项
bool f=;
for(int j=;j<n&&f;j++) //检查对于每个等差数列,它的每一项元素都在双平方数组中
if(!is[a[i]+j*tole]){ //如果有一项没有在bool数组里,则令bool值f为false
f=;
}
if(f){ //在经过对等差数列每一项检查后,f仍为真,则满足题意
printf("%d %d\n", a[i],tole); //满足条件的数列,输出首项和公差
num++; //num记录满足条件的数列的个数
}
}
}
if (!num) //num为0,则输出NONE
printf("NONE");
return ;
}
ACM集训的Training Day 3的A题。。。的更多相关文章
- yzm10的ACM集训小感
7月30号,ACM集训进行了两周,一切都已on the right way.这时的我适时地从题海中探出头,其实除了刷题,也该写点什么来总结下过去.首先,在第一周里,我学习了数据结构,知道了STL这么一 ...
- ACM: Gym 101047K Training with Phuket's larvae - 思维题
Gym 101047K Training with Phuket's larvae Time Limit:2000MS Memory Limit:65536KB 64bit IO F ...
- ACM集训
2019-07-18 09:06:10 emmm.... 昨天5个小时做了一道题,心情复杂,不着急慢慢来 Ivan recently bought a detective book. The book ...
- ACM集训的Day3 B。。。盲目搜索之DFS。。。
milk 一.题目描述: gzp有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到 另一个桶中,直到被灌 ...
- ACM集训的1B。。。。黑色星期五。。。。2333333
题目: 印象中有好多个13号是星期五,13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900 ...
- ACM集训的第。。。诶~不知道第几题=.=
题目: 郭铮鹏认为排序是一种很频繁的计算任务,所以他考虑了一个简单的问题:现在最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2 ...
- ACM集训的第一题
对于一群NP(2<=NP<=10)个要互送礼物的朋友,郭铮鹏要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人 ...
- 除法(Division ,UVA 725)-ACM集训
参考:http://www.cnblogs.com/xiaobaibuhei/p/3301110.html 算法学到很弱,连这么简单个问题都难到我了.但我偏不信这个邪,终于做出来了.不过,是参照别人的 ...
- 矩形嵌套问题-ACM集训
参考 http://blog.csdn.net/xujinsmile/article/details/7861412 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形 ...
随机推荐
- UVA 11645 Bits(组合数学)
从左往右处理,左半部分记为left, 右半部分记为right,若i,i -1均为1, 贡献为ans += (left + 1) + right * (1ll << (i - 1)); 否则 ...
- Source Insight编辑器配置
Sublime Text 无疑是一款很优秀的编辑器和阅读器,可惜对于中文编码不支持,网上的ConvertTOUTF8存在BUG,经常转码失败,体验很不好. 现在开始使用source insight,这 ...
- 【Exception—WebForm】当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。
最近做的项目现在发布到服务器上开始测试了,本地好好的程序,到服务器上却报异常了: 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作.请指定 ServiceNo ...
- amd和CMD
AMD(Modules/Asynchronous-Definition).CMD(Common Module Definition)规范区别? Asynchronous Module Definiti ...
- iOS模糊效果(毛玻璃效果)的实现
前一段时间项目中用到毛玻璃效果,那时对UIBlurEffect类和 UIVisualEffectView这两个类做了一部分了解.但当时并没有去特别的深入研究,直到项目做完后,才静下心来好好研究了一番. ...
- caffe中权值初始化方法
首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代 ...
- android--gradle编译龟速?offline!
- three.js材质
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- NOI2015 题解
[NOI2015]程序自动分析 离散化+并查集. [NOI2015]软件包管理器 [Noi2015]寿司晚宴 [Noi2015]荷马史诗 [NOI2015]品酒大会 [Noi2015]小园丁与老司机
- 【Redis】简介与安装
Linux 安装 [root@redis ~]# wget http://download.redis.io/releases/redis-2.8.19.tar.gz 解压缩redis[root@ha ...