51nod 1138 连续整数的和(简单数学、等差数列)
来源:互联网 发布:陕西广电网络校园招聘 编辑:程序博客网 时间:2024/06/01 09:28
Description
给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2)。例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8。如果不能写为若干个连续整数的和,则输出No Solution。
Input
输入1个数N(3 <= N <= 10^9)。
Output
输出连续整数中的第1个数,如果有多个按照递增序排列,如果不能分解为若干个连续整数的和,则输出No Solution。
Input示例
15
Output示例
147
解题思路1
我真的不是来凑博客的[逃……]
当加和的个数i为奇数时,如1,2,3,4,5,设最中间的数字3为x,则可得
代码实现
#include<bits/stdc++.h>using namespace std;#define maxn 44722int main(){ ios::sync_with_stdio(false); int n; cin>>n; bool flag=false; for(int i=maxn; i>=2; i--) { if(i%2) { int t=i/2*2+1; if(n%t==0) { int x=n/t; if(x-i/2>0) { cout<<x-i/2<<endl; flag=true; } } } if(!(i%2)) { int t=i/2; if(n%t==0) { int x=n/t; if(x/2-i/2+1>0&&x/2*2!=x) { cout<<x/2-i/2+1<<endl; flag=true; } } } } if(!flag) cout<<"No Solution"<<endl; return 0;}
解题思路2
直接使用等差数列公式可得
代码实现
#include<bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); int n; cin>>n; int t=sqrt(n*2); bool flag=false; for(int i=t;i>=2;i--) { int x=2*n+i-i*i; if(x%(2*i)==0&&x>0) { cout<<x/(2*i)<<endl; flag=true; } } if(!flag) cout<<"No Solution"<<endl; return 0;}
阅读全文
0 0
- 51nod 1138 连续整数的和(简单数学、等差数列)
- 51nod 1138 连续整数的和(等差数列)
- 51nod 1138 连续整数的和(数学)
- 51 NOD 1138 连续整数的和(简单数学公式)
- 51nod 1138 连续整数的和(数学)
- 51Nod 1138 连续整数的和(数学、规律)
- 51nod 1138 连续整数的和(数学)
- 51nod--1138 . 连续整数的和
- 51nod 1138 连续整数的和
- 51nod 1138 连续整数的和
- 51nod 1138 连续整数的和
- 51nod 1138 连续整数的和
- 51Nod 1138 连续整数的和
- 【51Nod】1138 连续整数的和
- 51nod 1138 连续整数的和
- 51NOD 1138 连续整数的和
- 51Nod 1138 连续整数的和
- 51nod 1138 【数学-等差数列】
- 【学习C++】学习C++ -> 概述与相关工具的安装
- 机器学习_链接分析-pageRank
- 请求参数、响应输出中文乱码问题
- hadoop-3.0.0-beta1运维手册(001):定制虚拟机
- 创建一个数组, 实现函数init()初始化数组实现empty()清空数组实现reverse()函数完成数组元素的逆置。
- 51nod 1138 连续整数的和(简单数学、等差数列)
- 刷题笔记:牛客字符串专项练习2
- 自定义类型(结构体,枚举,联合,位段)
- 十三周 项目3
- POJ-2417 Discrete Logging (BSGS算法,离散对数)
- 统计学习精要
- 2-爬虫解决了什么问题
- 莫名其妙的记录
- 深度学习里常用激活函数,目标函数