题目:
我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。
若其余各家的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。数据保证有唯一解。
这题似乎可以不用函数啊......
不行!就算是void也要用!
思路:
从1到n/2,一个一个验证。(据我验证,绝对不可能超过n/2的)
函数......lj()用来统计门牌号之和吧!
代码!
#include<iostream>
#include<cstdio>
using namespace std;
int lj(int x)
{
int s=0;
for(int i=1;i<=x;i++) s+=i;
return s;
}
int main()
{
int n,z;
cin>>n;
for(int i=1;i<=n/2;i++)
{
z=lj(i);
for(int wo=1;wo<=i;wo++)
if(z-wo*2==n)
{
cout<<wo<<' '<<i;
return 0;
}
}
}
这时,我愉快地提交了——
我***&%#$%#$%*^&(^&$@@#%$$&^~~*%^$%&啊!
屌炸了!
我一开始冥思苦想也想不出错哪了!还以为数据出问题了呢!
恍然大悟:
我在统计时把“我家的”也算进去了!怪不得......
在判断时把wo去掉不就得了?!
代码。
#include<iostream>
#include<cstdio>
using namespace std;
int lj(int x)
{
int s=0;
for(int i=1;i<=x;i++) s+=i;
return s;
}
int main()
{
int n,z;
cin>>n;
for(int i=1;i<=n/2;i++)
{
z=lj(i);
for(int wo=1;wo<=i;wo++)
if((z-wo)-wo*2==n)//看看变化吧。
{
cout<<wo<<' '<<i;
return 0;
}
}
}
提交——
拜拜!