LightOJ 1278 Sum of Consecutive Integers
2017-01-17 17:32
344 查看
题目分析
这道题一开始没有思路,然后看了网上的推导过程。具体是这样:sum=a+(a+1)+(a+2)+......+(a−k+1),然后可以推出式子n=(2a+k−1)/(2k),2a−1=2n/k−k,因为2a−1为奇数,所以k必须为奇数。(奇数*偶数=偶数),然后直接求n的奇素因子即可。#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define LL long long const int maxn = 1e7+100; bool vis[maxn]; int prime[maxn/10]; void init(){ memset(vis, false, sizeof(vis)); int tot = 0; for(int i = 2; i < maxn; i++)if(!vis[i]){ prime[tot++] = i; for(LL j = (LL)i*i; j < maxn; j += i) vis[j] = true; } } int main(){ init(); int T; LL n; scanf("%d", &T); for(int kase = 1; kase <= T; kase++){ scanf("%lld", &n); while(n%2 == 0) n /= 2; int ans = 1; for(int i = 0; (LL)prime[i]*prime[i] <= n; i++)if(n%prime[i] == 0){ int tot = 1; while(n%prime[i] == 0){ tot++; n /= prime[i]; } ans *= tot; } if(n != 1) ans *= 2; printf("Case %d: %d\n", kase, ans-1); } return 0; }
相关文章推荐
- lightOJ 1278 Sum of Consecutive Integers(数论,数学推导)
- 【LightOJ - 1278】 Sum of Consecutive Integers 【简单公式变形-算数基本定理】
- LightOJ - 1278 Sum of Consecutive Integers 素质因子
- LightOJ 1278 Sum of Consecutive Integers(奇素数个数)
- LightOj 1278 - Sum of Consecutive Integers(求奇因子的个数)
- LightOJ1278 Sum of Consecutive Integers 素数筛法+数学分析
- Light OJ 1278 Sum of Consecutive Integers N拆分成连续整数和
- LIGHT OJ 1278 Sum of Consecutive Integers(奇因子的个数)
- LIGHT OJ 1278 Sum of Consecutive Integers [因子个数]【数论】
- hdu 1231, dp ,maximum consecutive sum of integers, find the boundaries, possibly all negative, C++
- Sum of Consecutive Integers
- Represent an integer by the sum of at least two consecutive integers
- PKU-2739-Sum of Consecutive Prime Numbers(筛素数法打表)
- poj 2739 Sum of Consecutive Prime Numbers 解题报告
- poj 2739 Sum of Consecutive Prime Numbers(暴力+打表)
- 习题10-6 UVA - 1210 Sum of Consecutive Prime Numbers 连续素数之和(滑动窗口)
- UVa1210 - Sum of Consecutive Prime Numbers
- LeetCode-371-Sum of Two Integers-E
- 1.3 SUM OF Consecutive Prime Numbers
- java算法实现之Sum of Two Integers