7649:我家的门牌号

简介: 总时间限制: 1000ms   内存限制: 65536kB描述我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。
总时间限制: 1000ms   内存限制: 65536kB
描述

我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。

若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。

数据保证有唯一解。

输入
一个正整数n。n < 100000。
输出
一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
样例输入
100
样例输出
10 15

问题分析

  本题的用穷举法求解。

  假设总共有k家,我家门牌号为x,那么k(k+1)/2 -2x=n,得k(k+1)-2n=4x>=4(因为x>=1)。

  推导得:(k+1)(k+1) > k(k+1)>=4+2n,最后得:k>sqrt(4+2n)-1。

程序说明

  程序中,尽量减少穷举的数量。

代码一:

 1 #include <stdio.h>
 2 int main(int argc, char *argv[])
 3 {
 4     int k,n,x,sum=1;
 5     
 6     scanf("%d",&n);
 7     //n=100;
 8     for(k=2;k<=n;k++)
 9     {
10         sum=sum+k;
11         if(sum>n&&(sum-n)%2==0) {x=(sum-n)/2;break;}
12     }
13     printf("%d %d\n",x,k);
14     return 0;
15 }

代码二:

 1 #include <iostream>  
 2 #include <cmath>  
 3 using namespace std;  
 4 int main()  
 5 {  
 6     int n, mink, x,k;  
 7   
 8     cin >> n;  
 9   
10     mink = sqrt(4 + 2 * n) - 1;  
11   
12     for(k=mink+1; ;k++)
13     {  
14         if((k * k + k- 2 * n) % 4 == 0)
15         {  
16             x = (k * k + k - 2 * n) / 4;  
17             if(x <= 0)  
18                 continue;  
19             cout << x << " " << k<< endl;  
20             break;  
21         }  
22     }  
23   
24     return 0;  
25 } 

 

相关文章
这个树洞里有200多万条普通人的温柔回信
这个树洞里有200多万条普通人的温柔回信
369 0
《C游记》 第伍章 - 初识指针阴阳窍 地址还归大道真(贰)
《C游记》 第伍章 - 初识指针阴阳窍 地址还归大道真(贰)
107 0
《C游记》 第伍章 - 初识指针阴阳窍 地址还归大道真(贰)
我家的小猫咪
我们家来了一位新成员——猫。它一身灰色的毛,一根其它颜色的毛都没有。它圆滚滚的,可爱极了!我们都很喜欢它。我们还给它起了一个好听的名字——召才。我们家的猫日常是这样的:睡觉、吃饭、舔身子、抓鱼、跟我玩、喝水、呆愣、撒尿、蹭人、看鱼、鬼叫。
域名空间那些事 第二季
以我了解到的信息,大部分人都是在国外购买域名,解析在国内,比较有名的DNS解析商 DNSpod如果为了域名空间交易方便申请信用卡,信用卡类型必须可以交易美金,一般是双币信用卡 大家在国外注册域名,购买空间时涉及到信用卡和paypal支付问题,以下是查找的一篇资料,是否准确需要自己验证,作为基础常识供需要时参考 PayPal在三个地方会用到银行卡信息。
1307 0
|
传感器 物联网
会上网的鸡,有啥不一样?
干净的鸡舍,全自动搭配输送的饲料,恒温恒湿的内部环境,保持稳定的空气含氮量…… 这是物联网鸡的标配生活。
1973 0
|
安全 网络协议 数据安全/隐私保护