NYOJ-487月老的烦恼(1)类似于素数筛法一样的打表及一种筛法核心代码。。
月老的烦恼(1)
- 描述
-
月老最近遇到了一个很棘手的问题,就是“剩男”“剩女”急速增长,而自己这边又人手不足导致天天都得加班。现在需要你来帮助月老解决这个问题,牵红绳的规则很简单:每个男生都一个编号n(1<=n<=500000),编号n的因数之和就是要牵线的女生的编号。
如20的因子是:1,2,4,5,10;
- 输入
- 输入数据的第一行是一个数字T(1<=T<=500000),它表明测试数据的组数.然后是T组测试数据,每组测试数据只有一个数字N(1<=N<=500000).
- 输出
- 对于每组测试数据,请输出一个代表输入编号N男生的另一半的编号.
- 样例输入
-
3
2
10
12样例输出
1
8
16先看数据范围,两层for循环肯定超时,我们首先想到的是打表,可是题目要求的是因子和,怎么筛选出因子呢,,
下面先来看看素数筛法:
一种筛法核心代码:
for(i=2; i<=1000000; i++)
{
if(a[i])
for(j=2*i; j<=1000000; j+=i)
a[j]=0;//以前还以为会超时,后来发现原来实际上省了好多步骤。。
}//这个时间复杂度可能要比线性筛法更高,但线性筛法还没有掌握。。。
类似于素数打表,我们发现既然求因子和,那么何不将因子累加呢,从因子的角度出发;
类似于筛法一样的打表:
for(i=2; i<=250000; i++)
for(j=2*i; j<=500000; j+=i)
a[j]+=i;//是不是很神奇,,这也不会超时。
#include<bits/stdc++.h>
using namespace std;
const int N=500000+10;
int a[N];
int main()
{
int t,n,i,j;
memset(a,0,sizeof(a));
for(i=2; i<=250000; i++)
for(j=2*i; j<=500000; j+=i)
a[j]+=i;//打表;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",n==1?0:a[n]+1);
}
return 0;
}//比较简洁易懂;
NYOJ-487月老的烦恼(1)类似于素数筛法一样的打表及一种筛法核心代码。。的更多相关文章
- nyoj_478_月老的烦恼(1)_201312101248
月老的烦恼(1) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 月老最近遇到了一个很棘手的问题,就是“剩男”“剩女”急速增长,而自己这边又人手不足 ...
- zzulioj--1775-- 和尚特烦恼1——是不是素数(素数水题)
1775: 和尚特烦恼1--是不是素数 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 563 Solved: 193 SubmitStatusWeb ...
- nyoj 239 月老的难题【匈牙利算法+邻接表】
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福 ...
- NYOJ 1063 生活的烦恼 (二叉树)
题目链接 描述 生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题.那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树 ...
- NYOJ——239月老的难题(二分图最大匹配)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家, ...
- NYOJ 239 月老的难题
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福 ...
- nyoj 275-队花的烦恼一 (stack, push, pop)
275-队花的烦恼一 内存限制:64MB 时间限制:3000ms 特判: No 通过数:11 提交数:14 难度:1 题目描述: ACM队的队花C小+经常抱怨:“C语言中的格式输出中有十六.十.八进制 ...
- nyoj 925 国王的烦恼(最小生成树)
/* 题意:N个城市中每两个城市有多条路径连接,可是因为路径存在的天数是有限的!以为某条路经不存在了 导致N个城市不能连通了,那么村名们就会抗议!问一共会有多少次抗议! 思路:最小生成树....我们用 ...
- NYOJ 925 国王的烦恼
从最后一天开始往前加边. 同一天的边同时加到图上,加完之后检查集合数量是否和没加之前有变化. 有变化的话,答案就+1. #include<cstdio> #include <iost ...
随机推荐
- Win7系统出现提示: “Windows已遇到关键问题,将在一分钟后自动重新启动。”
1. 若用户在使用Win7系统时,遇到上述系统故障,建议重启电脑.等电脑开机自检一过,马上按键盘上的F8键,选择进入安全模式.在安全模式下,进行系统还原.其他的解决方法见下. 1.或者,在安全模式下, ...
- Unity Mesh 初体验
什么是Mesh Mesh是Unity中的一个组件,称为网格组件.通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而一个复杂的多边形,实际上是由多个三角面拼接而成.所以一个3D模型的表面是 ...
- jQuery在$(function(){})中調用函數
任務太緊,很少記筆記,記下一篇jQuery中調用函數的例子: 該方法是在載入頁面的時候,判斷 ModelName 不為空,則獲取Model信息加載到Table中: 另外,在點擊半成品編號文本框時,也調 ...
- 前端之CSS创建的样式
CSS即层叠样式表,在创建时有以下几种样式: 1.内联样式(行内样式.行间样式): <标记 style=“属性:属性值:”></标记> 2.内部样式(嵌入式样式): <s ...
- Visual studio每次build自动增加版本号
关键词:visual studio,rc file,VS_VERSION_INFO,FILEVERSION,PRODUCTVERSION 目标:希望每次在vs中编译项目时,生成的可执行程序版本号自动+ ...
- nodejs,python,sublime和Eclipse的包管理器
Python的包管理器叫pip. 首先安装Python运行环境Python 3.7.0:https://www.python.org/downloads/release/python-370/ Pyt ...
- PHP一句话后门过狗姿势万千之后门构造与隐藏
第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...
- liunx 常用的命令
常用命令 ======================输入模式=================== Ctrl+d 向前缩进 Ctrl+t 向后缩进 =====================光标模式 ...
- ACCEPT详解
NAME 名称 accept - 在一个套接字上接收一个连接 SYNOPSIS 概述 #include <sys/types.h> #include <sys/socket.h> ...
- JS的本地保存localStorage、sessionStorage用法总结
localStorage 生命周期是永久的 这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在. sessionStorage 生命周期为当前窗口或标签 ...