程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 連續自然數和

連續自然數和

編輯:C++入門知識

題目看起來比較水,但是,數學的思維還是很重要的

直接枚舉TLE;

因此,我們可以枚舉長度;

A、當長度為奇數的時候,中間數必定為整數

B、當長度為偶數的時候,中間數為整數 / 2(以數學角度就是存在兩個中間數)


 
#include<iostream>   
#include<cstdio>   
#include<cstring>   
#include<cmath>   
#include<algorithm>   
#include<bitset>   
#include<iomanip>   
  
using namespace std;  
  
int main()  
{  
    int n ;  
    scanf( "%d" , &n ) ;   
    for( int i = sqrt( 2 * n ) ; i >= 2 ; i -- )  
    {  
        if( n % i == 0 && i % 2 == 1 )  
        {  
            int temp = n / i ;  
            cout << temp - i / 2  << " " << temp + i / 2 << endl ;   
        }  
        else if( 2 * n % i == 0 && ( 2 * n / i % 2 == 1 ) )  
        {  
            int temp = n / i ;  
            cout << temp - i / 2 + 1  << " " << temp + i / 2 << endl ;   
        }  
    }   
    return 0 ;  
}  

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<iomanip>

using namespace std;

int main()
{
	int n ;
	scanf( "%d" , &n ) ; 
	for( int i = sqrt( 2 * n ) ; i >= 2 ; i -- )
	{
		if( n % i == 0 && i % 2 == 1 )
		{
			int temp = n / i ;
			cout << temp - i / 2  << " " << temp + i / 2 << endl ; 
		}
		else if( 2 * n % i == 0 && ( 2 * n / i % 2 == 1 ) )
		{
			int temp = n / i ;
			cout << temp - i / 2 + 1  << " " << temp + i / 2 << endl ; 
		}
	} 
	return 0 ;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved