蓝桥 连续奇数和

版权声明:如果转载,请注明出处。 https://blog.csdn.net/S_999999/article/details/88363032

标题:连续奇数和

小明看到一本书上写着:任何数字的立方都可以表示为连续奇数的和。

比如:
2^3 = 8 = 3 + 5
3^3 = 27 = 7 + 9 + 11
4^3 = 64 = 1 + 3 + ... + 15
虽然他没有想出怎么证明,但他想通过计算机进行验证。

请你帮助小明写出 111 的立方之连续奇数和表示法的起始数字。如果有多个表示方案,选择起始数字小的方案。        

请严格按照要求,通过浏览器提交答案。
注意:只提交一个整数,不要写其它附加内容,比如:说明性的文字。
// 方法一 :  利用性质  前n个奇数的和 为 n^2;

#include<iostream>
using namespace std;
int main(void){
    long long int tmp = 111;
	long long int ans = tmp*tmp*tmp;
    for(  long long int i =1;i<tmp*tmp ;i++)
          for( long long int j = 1;j<=tmp*tmp ;j++)
               if( j*j - i*i == ans ){ 
                   printf("%lld \n",i*2+1);
                   break;
			   }
    return 0;
}

// 方法 二 : 枚举

#include<iostream>
#include<cstdlib>
#include<cstring> 
using namespace std; 
long long int prime[111*111*111];
bool  isprime( long long int n  ){
	  if( n & 1 )
	      return true;
	  return  false;	   		   	   
}
int main(void){
    long long int tmp = 111;
	long long int ans = tmp*tmp*tmp;
 	int  cnt = 1;
	for( long long int i=1;i<=ans;i++)
	     if( isprime( i )  ) 
	         prime[cnt++] =i;
	    
    
    for( int i=1;i< cnt;i++){
    	 long long int sum = 0;
		 for( int j= i;j<cnt;j++){
		 	  if( sum < ans ){
		 	  	  sum+= prime[j];
			   }
			   else if( sum == ans ){
			   	  printf("%d\n",prime[i]);
			   	  return 0;
			   }
			   else break;
		 } 
	}
    
   return 0;
}

猜你喜欢

转载自blog.csdn.net/S_999999/article/details/88363032
今日推荐