信息技术学科教研
当前登录用户:
教学专题
  • 教学设计
  • 教学课件
  • 学案设计
  • 微课专题
  • 说课专题
  • 教学视频
  • 1404-数学求解法

    编辑发布:webdc   时间:2019/8/13 22:52:27   访问量:2035  评论条:  

    1404:我家的门牌号


    时间限制: 1000 ms         内存限制: 65536 KB
    提交数: 5325     通过数: 3656

    【题目描述】

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

    若其余各家的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。数据保证有唯一解。

    【输入】

    一个正整数n。n<100000。

    【输出】

    一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。

    【输入样例】

    100

    【输出样例】

    12 16

    【来源】


    No

    1404 我家的门牌号

    由题意得

    设总家数为x,我的家的门牌号为y, y<=x

    (1+x)x/2-3y =N

    =>x*x+x-6y=2N

    =>x*x+x-2N=6y (y<=x)    1

    1等式分析有如果y变大,x就得变小。

    y=x,则总家数至少为x,代入1

    x*x+x-6x=2N 

    x*x-5x=2N

    (x-5/2)2 =2N+25/2

    x=

    if((x*x+x-2N)%6==0)成立,

    y=(x*x+x-2N)/6,

    输出cout<<y<<" "<<x;

    参与代码:

    #include<iostream>

    #include<cmath>

    using namespace std;

    int main()

    {

           int i,x,y,N;

           cin>>N;

          x=sqrt(2*N+25/4);//+5/2;

           //x =sqrt(N);

           int j = 0;   

           for(i = x;i>x-1;i++)

           {

               if((i*i+i)-2*N<0)

               {

                   cout<<i<<endl;

                         continue;

                    } 

              if((i*i+i-2*N)%6==0)

              {

                  

                   y = (i*i+i-2*N)/6;

                   cout<<y<<" "<<i;

                   break;//大于有10就结束。

              }

           }

           return 0;

    }

    1404.doc

    sjfakl