码迷,mamicode.com
首页 > 其他好文 > 详细

URAL 1120. Sum of Sequential Numbers (数学)

时间:2015-06-21 18:38:02      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

1120. Sum of Sequential Numbers

Time limit: 1.0 second
Memory limit: 64 MB
There is no involute formulation concerning factitiously activity of SKB Kontur in this problem. Moreover, there is no formulation at all.

Input

There is the only number N, 1 ≤ N ≤ 109.

Output

Your program is to output two positive integers A and Pseparated with a space such that:
  1. N = A + (A + 1) + … + (A + P ? 1).
  2. You are to choose a pair with the maximal possible value of P.

Sample

input output
14
2 4
Problem Author: Leonid Volkov
Problem Source: USU Open Collegiate Programming Contest October‘2001 Junior Session




解析:由N = A + (A + 1) + … + (A + P ? 1)可计算出P的最大值为sqrt(2*n),直接枚举即可。




AC代码:

#include <bits/stdc++.h>
using namespace std;

int n;
int ansa, ansp;

int f(int a, int b){
    return ((b - a + 1) % 2) ? ((b - a) / 2 * (a + b - 1) + b) : ((b - a + 1) / 2 * (a + b));
}

int main(){
    int n;
    while(scanf("%d", &n) != EOF){
        int p = sqrt((double)(2 * n));      //P的最大值
        while(p){
            int a = (2*n / p - (p - 1))>>1;     //通过P,计算A
            if(a && f(a, a + p - 1) == n){
                ansa = a;
                ansp = p;
                break;
            }
            p --;
        }
        printf("%d %d\n", ansa, ansp);
    }
    return 0;
}



URAL 1120. Sum of Sequential Numbers (数学)

标签:

原文地址:http://blog.csdn.net/u013446688/article/details/46582295

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!