1408210829-hd-七夕节.cpp
来源:互联网 发布:串口发送接收数据原理 编辑:程序博客网 时间:2024/04/28 20:39
七夕节
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3917 Accepted Submission(s): 1381
Problem Description
七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!"
人们纷纷来到告示前,都想知道谁才是自己的另一半.告示如下:
数字N的因子就是所有比N小又能被N整除的所有正整数,如12的因子有1,2,3,4,6.
你想知道你的另一半吗?
Input
输入数据的第一行是一个数字T(1<=T<=500000),它表明测试数据的组数.然后是T组测试数据,每组测试数据只有一个数字N(1<=N<=500000).
Output
对于每组测试数据,请输出一个代表输入数据N的另一半的编号.
Sample Input
321020
Sample Output
1822
解题思路
因为是求不大于他本身的因子之和,所以sum可以初始化为1.当然对于求它的所有因子不需要从2判断到他本身,为了优化节省时间,可以只判断到sqrt(n),若之前的i为他的一个因子,那sum+=i+n/i;因子之和可以同时加上i和n/i的值,相当于一下加了两个因子。当然最后要特殊处理一下sqrt(n),若其为整数则加上。
对于sqrt(n)是否是整数,曾经我的判断过程是: sqrt(n)-(int)sqrt(n)==0,今天突然想到,当在求其因子的时候,i是递增的,当判断到<sqrt(n)时跳出,而这时i的值正好处于一个特殊的地位,若sqrt(n)为整数,那么此时i==sqrt(n),那么i*i==n;若sqrt(n)不为整数,那么i就要比sqrt(n)大,那么i*i>n。
代码
<span style="font-size:18px;">#include<stdio.h>#include<math.h>int main(){ int n; int t; int i,j,sum; scanf("%d",&t); while(t--) { scanf("%d",&n); sum=1; for(i=2;i<sqrt(n);i++) if(n%i==0) sum+=i+n/i; if(i*i==n) //因为上面的 i判断到 sqrt(n)之前,而 i的值正好为sqrt(n) sum+=i; //如果 sqrt(n)的值为整数,则符合题意。不用再去用 sqrt(n)-(int)sqrt(n)==0去判断 printf("%d\n",sum); } return 0;}</span>
- 1408210829-hd-七夕节.cpp
- 1411261235-hd-七夕节
- 1407261645-hd-密码.cpp
- 1407291712-hd-三角形.cpp
- 1408010808-hd-大菲波数.cpp
- 1408011500-hd-N!.cpp
- 1408071108-hd-Milk.cpp
- 1408140917-hd-Bitset.cpp
- 1408182100-hd-ASCII.cpp
- 1408201651-hd-GPA.cpp
- 1408201941-hd-Elevator.cpp
- 1408202033-hd-最小公倍数.cpp
- 1408211519-hd-排序.cpp
- 1407230827-hd-数值统计.cpp
- 1407230852-hd-偶数求和.cpp
- 1407231800-hd-反素数.cpp
- 1407231857-hd-Problem A .cpp
- 1407231901-hd-Problem C.cpp
- 基于TCP的聊天程序(了不起的nodejs chapter6)
- java在线预览txt、word、ppt、execel,pdf代码
- VC编程之标题栏和菜单
- hdu1323
- 那是我日夜思念深深爱着的人呐
- 1408210829-hd-七夕节.cpp
- STM32通用定时器库函数设置
- c语言字符处处理函数
- 深入java虚拟机(一)——java虚拟机底层结构详解
- 每天一个linux命令:netstat命令
- hibernate的单向多对一和一对多
- Perl语言学习笔记 15 智能匹配与give-when结构
- Java多态
- Oracle 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed) 转载