1404:我家的門牌號(C C++)
【題目描述】
我家住在一條短衚衕裡,這條衚衕的門牌號從1開始順序編號。 若其餘各家的門牌號之和減去我家門牌號的兩倍,恰好等於n,求我家的門牌號及總共有多少家。資料保證有唯一解。
【輸入】
一個正整數n。n<100000。
【輸出】
一行,包含兩個正整數,分別是我家的門牌號及總共有多少家,中間用單個空格隔開。
【輸入樣例】
100
【輸出樣例】
12 16
【程式碼】1.0錯誤
寫了1.0發現不知道為什麼錯了 查了答案 放2.0 數學這…人傻了 我不行
#include <iostream>
using namespace std;
int f(int x)
{
long long s=0;
for(int i=1;i<=x;i++)
s+=i;
return s;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=1000;i++)
{
int s=f(i);
for(int j=1;j<=i;j++)
{
if(s-2*j == n)
{
cout<<j<<" "<<i;
break;
}
}
}
return 0;
}
【程式碼】2.0
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,home,x;
int i;
cin>>n;//輸入n
/*
設最後門牌號為k,則總和為:k*(k+1)/2
設家的門牌號為x,則由題意:k*(k+1)/2=3*x+n
即:k*(k+1)=6*x+2*n
又:k*(k+1)+k+1>6*x+2*n
得:(k+1)*(k+1)>6*x+2*n
開方:k+1>sqrt(6*x+2*n)
兩邊減一:k>sqrt(6*x+2*n)-1
x取最小值1:home=sqrt(6+2*n)-1
*/
// home=sqrt(6+2*n)-1;
for(i=1;; i++) //從家的門牌號開始逐個嘗試
{
if((i*i+i-2*n)%6==0)
{
x=(i*i+i-2*n)/6;
if(x<=0) continue;//x不可能<1
if(x>0)//找到後
{
cout<<x<<" "<<i;//輸出
break;//終止迴圈
}
}
}
return 0;
}
相關文章
- C++入門教程C++
- C++中的&引用符號全解C++符號
- C++入門(2):為何還學C++?C++
- 22. 括號生成-c++C++
- C++身份證號驗證C++
- [C++]括號使用小技巧C++
- C++入門程式設計----C++運算子(8)C++程式設計
- C++入門(3):C++開發環境搭建C++開發環境
- C++ 提示未宣告的識別符號C++符號
- 括號匹配的檢驗問題(C++)C++
- C++快速入門+20201011C++
- c++物件建立帶括號與無括號的區別C++物件
- python opencv識別藍牌車牌號 之 取出車牌號 (1/3)PythonOpenCV
- C++與Rust引用外部符號的比較C++Rust符號
- PAT乙 1041 考試座位號 (15分)(C C++)C++
- 17. 電話號碼的字母組合-c++C++
- VS2017 MFC C++入門C++
- python入門(需要C++基礎)PythonC++
- 開心檔之C++ 訊號處理C++
- 【C++】C++的位元組對齊C++
- 【C/C++】訊號處理之sigaction函式的健壯性測試C++函式
- C++語言菜鳥快速入門C++
- C++ 入門防爆零教程(上冊)C++
- C++與正規表示式入門C++
- C++入門教程(11):呼叫函式C++函式
- C++入門教程(9):while 語句C++While
- C++ Qt開發:如何使用訊號與槽C++QT
- 【C/C++】c++多程式與hiredis的淺使用C++Redis
- CF1404B. Tree Tag
- C/C++中的constC++
- 小程式驗證車牌號(含新能源車牌)
- Android NDK入門:C++ 基礎知識AndroidC++
- C++入門教程(12):定義函式C++函式
- C++入門教程(14):過載函式C++函式
- 演算法競賽C++快速入門演算法C++
- C++入門教程之二:變數C++變數
- 最全的C/C++入門到進階的書籍推薦,你需要嘛?C++
- c++語言教程——01 c++的簡介C++