LightOJ 1278 一个固定数可以换为几个连续数之和 求这样的连续数有多少对
来源:互联网 发布:网络上的v是什么意思 编辑:程序博客网 时间:2024/04/29 15:42
题目:http://www.lightoj.com/volume_showproblem.php?problem=1278
若m能够转为连续n个整数的和,即(x+(x+n-1))*n/2=m
x = (2*m/n-n+1)/2
即2*m/n-n为奇数,当n为奇数时,其值一定为奇数,当n为偶数时,2*m/n必为奇数,令p = 2*m/n,
x = p- 2*m/p,p为奇数。即该问题求解的是m的奇因子的个数,
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
bool p[10000000];
int prime[5000000];
int count;
void makePrime()
{
for(int i = 2;i<10000000;i++)
{
if(p[i]==false)
{
if(i<=sqrt(10000000))
{
for(int j = i*i;j<10000000;j+=i)
{
p[j] = true;
}
}
prime[count++] = i;
}
}
}
int main()
{
makePrime();
int T;
long long m,ans;
scanf("%d",&T);
for(int i = 1;i<=T;i++)
{
scanf("%lld",&m);
ans = 1;
while(m%2==0)
m/=2;
for(int j = 1;j<count&&prime[j]*prime[j]<=m;j++)
{
int k=0;
if(m%prime[j]==0)
{
while(m%prime[j]==0)
{
m = m/prime[j];
k++;
}
ans *= (k+1);
}
}
if(m>1)
ans *= 2;
printf("Case %d: %lld\n",i,ans-1);
}
return 0;
}
- LightOJ 1278 一个固定数可以换为几个连续数之和 求这样的连续数有多少对
- 1.2.2一个数可以有多少种用连续素数之和表示
- 连续数之和为x,求共有几对
- 判断一个数是否可以表示为k个连续的数之和
- 求任意数以内所有可以表示为连续素数之和的素数。
- 2009年山东大学计算机复试上机题目,输入一个数,求所有连续序列之和为这个数的序列
- Vijos1090. 连续数之和
- vijos连续数之和
- SACU 判断一个数能否分解为几个连续自然数之和
- hdu 2715 数分解为几个连续数的和
- 几个连续数相加
- Vijos P1090连续数之和
- #Vijos P1090#连续数之和
- 计算一串连续数组的之间 连续几个数(任意连续)之和的最大值 Microsoft Visual Studio
- (DS1.4.3)POJ 2739(一个数能表示成多少个连续素数之和)
- uva 10892 求a,b 最小公倍数为m a,b这样的数有多少个
- 求一个正整数是由哪几个连数(连续的正整数)相加
- 求一个数阶乘的后面连续0的个数
- 谈谈对摩尔定理的理解及其当前是否继续有效
- 获取磁盘逻辑分区 相关信息 1
- 如何在Linux下卸载VMware Workstation
- hdu 4472 dp
- 初探AC6641
- LightOJ 1278 一个固定数可以换为几个连续数之和 求这样的连续数有多少对
- 兄弟郊游问题
- js写前进后退按钮
- SpringMVC_使用
- js隔段时间执行函数
- webservice例程
- 浅谈CTO的作用----软件公司如何开源节流(一)
- 用metasploit来exploit虚拟机XPSP3的ms08_067
- CSDN收藏备份Python脚本