【入门】计算等腰三角形中的数字的位置

20 篇文章 1 订阅

题目描述

1
2     3
4     5      6
7     8     9      10
11   12  13  14    15
                                                                         ……
 

求这个三角形中第N个数是第几行的第几个数

输入

Input
    输入一个整数N(1<=N<=32767),表示第N个数。

输出

Output
    输出两个整数i,j,中间用一个空格隔开,表示第N个数在第i行的第j个位置。

样例输入

5

样例输出

3 2

[小数据量时]

自己独立完成的做法

#include <iostream> 
using namespace std; 
int main() 
{ 
    int n,i,j,t=1; 
    cin>>n; 
    for(i=1;i<=1000;i++) 
    { 
        for(j=1;j<=i;j++) 
        { 
            if(t==n) 
            cout<<i<<" "<<j; 
            t++; 
              
        } 
    } 
    return 0; 
} 
  

[大数据量时]
大数据量时,不懂得如何优化算法
在两个师兄帮助下做出来的两种代码
1,
#include <iostream> 
using namespace std; 
int main() 
{ 
    int n,i=0,sum=0; 
    cin>>n; 
    while(1) 
    { 
        if(sum>=n) break; 
        sum+=++i; 
    } 
    cout<<i<<" "<<n-sum+i; 
    return 0; 
} 
2,
#include <iostream> 
using namespace std; 
int main() 
{ 
    int N,i=0,sum=0,min=0,n=0,a,b; 
    cin>>N; 
    if(N==1) cout<<"1"<<" "<<"1"<<endl; 
    else
    { 
        min=2; 
        n=2; 
        while(!(N>=min && N<=n*n-min+1)) 
        { 
              n=n+1; 
              min=min+n-1; 
        } 
  
      a=n; 
      b=1; 
      for(i=min;i<=n*n-min+1;i++,b++)   
          if(i==N) 
          cout<<a<<" "<<b; 
    } 
    return 0; 
} 
算法方面比较薄弱!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值