lightOJ 1278 Sum of Consecutive Integers(数论,数学推导)

标签: lightOJ
801人阅读 评论(2) 收藏 举报
分类:

题目:给出一个数n,求出有多少种连续整数和等于n(连续整数至少两个)。“For example, N = 15 has three solutions, (1+2+3+4+5), (4+5+6), (7+8).”

分析:n=a+(a+1)+(a+2)+(a+3)+……+(a+k-1) ==> n=(2a+k-1)/2*k ==>2n/k-k=2a-1 ==>2n/k-k是一个奇数。如果k是一个偶数,那么2n/k必是奇数,偶数/偶数=奇数,所以答案和奇因子的个数相关,如n=2*3^2*5^2.那么k可以取2和g(3),g(5)的组合乘积(一定要有2,3和5至少有一个),其中g(3)=3^0,3^1,3^2,g(5)=5^0,5^1,5^2。但是g(3)和g(5)不能同时取1.所以结果为C(3,1)*C(3,1)-1=8;按照相同的思路,如果k是一个奇数,那么2n/k必是一个偶数,偶数/奇数=偶数,那么k对应消除n的除2外的其他素因子(严格的说是其他素因子的组合),还以上一个例说明:k可以取g(3),g(5)的组合乘积,结果同为C(3,1)*C(3,1)-1。最后总结,对于n=2^a1*3^a2*5^a3*7^a4*---*pri^an,计算结果就是(a2+1)(a3+1)(a4+1)*--*(an+1)-1。

#include <iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
const int maxn=1e7+5,maxn2=7e5;
int pri[maxn2];   
bool tag[maxn];
int top=0;
void getpri(){
	for(int i=2;i<maxn;i++){
		if(!tag[i])pri[top++]=i;
		for(int j=0;j<top&&i*pri[j]<maxn;j++){
			tag[i*pri[j]]=1;
			if(i%pri[j]==0)break;
		}
	}
} 
int main(int argc, char *argv[]) {
	//freopen("cin.txt","r",stdin);
	int n,i,j;
	LL t;
	getpri();
	while(cin>>n){
		for(i=1;i<=n;i++){
			scanf("%lld",&t);
			LL tmp=t,ans=1;
			int po=0;
			while(tmp%2==0){
				tmp/=2;
			}
            for(j=1;j<top&&pri[j]<=tmp;j++){
            	if(tmp%pri[j]==0){
            		po=1;
            		tmp/=pri[j];
            	    while(tmp%pri[j]==0){
            		    po++;
            		    tmp/=pri[j];
            	    }
            	    ans=ans*(po+1);
				}
            }
            if(tmp>1)ans*=2;  //有大于10^7的素因子出现,且一定只有一个. 
			printf("Case %d: %lld\n",i,ans-1);			
		}
	}
	return 0;
}




查看评论

LightOJ 1278 Sum of Consecutive Integers数论

我可算发现了数论啊~就是导啊导啊~~ 设n可以写成a,a+1,a+2……a+k-1的和(其中a>=1),即n=(a+a+k-1)*k/2。那么2a-1=2n/k-k。所以2n/k-k为奇数(分析一下...
  • zhou_yujia
  • zhou_yujia
  • 2015-07-03 16:52:59
  • 486

LightOJ 1278 Sum of Consecutive Integers

题目分析 这道题一开始没有思路,然后看了网上的推导过程。具体是这样:sum=a+(a+1)+(a+2)+......+(a−k+1)sum = a+(a+1)+(a+2)+......+(a-k+...
  • chen_ze_hua
  • chen_ze_hua
  • 2017-01-17 17:32:29
  • 140

Sum of Consecutive Prime Numbers----暴力水题

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: ...
  • bless924295
  • bless924295
  • 2017-04-10 15:12:26
  • 177

POJ 2739 Sum of Consecutive Prime Numbers(素数打表+素数搜索)

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Sub...
  • helloiamclh
  • helloiamclh
  • 2015-10-20 21:41:57
  • 705

LightOJ - 1278 Sum of Consecutive Integers 素质因子

题意: 求连续的一段数字和是给定的n 的组合种数 思路: 自己推一下就可以知道, n 的奇数因子都能提供一个组合方式 那样就转化为求 n 的素质因子的组合方式 #include #i...
  • xiang_6
  • xiang_6
  • 2017-11-14 22:51:39
  • 84

北大ACM2739——Sum of Consecutive Prime Numbers

题目的意思是:给你一个数N,求由连续的m个素数之和等于N的组数。 这题很简单,一开始没看到题目是连续的素数,所以一开始想用深搜来做,可是不行,后来再看了题目,才知道是连续的素数,是连续的素数就简单很...
  • qq_25425023
  • qq_25425023
  • 2015-07-08 13:31:23
  • 597

POJ2739:Sum of Consecutive Prime Numbers(简单数论)

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Sub...
  • junior19
  • junior19
  • 2017-02-01 20:34:52
  • 202

POJ-2739 Sum of Consecutive Prime Numbers-求一个数满足有多少组递增相加的素数等于该数

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: ...
  • MIKASA3
  • MIKASA3
  • 2015-08-07 19:31:19
  • 375

1259. Sum of Consecutive Primes

1259. Sum of Consecutive Primes Description Some positive integers can be represented by a...
  • luojiayu14
  • luojiayu14
  • 2012-01-14 18:30:59
  • 1751

LIGHT OJ 1278 Sum of Consecutive Integers [因子个数]【数论】

题目链接:http://vjudge.net/contest/137260#problem/W ———————————–. Sum of Consecutive Integers Time Li...
  • qq_33184171
  • qq_33184171
  • 2016-10-25 19:37:29
  • 524
    个人资料
    持之以恒
    等级:
    访问量: 37万+
    积分: 9421
    排名: 2417
    我的链接
    最新评论