【題解】d096. 00913 - Joana and the Odd Numbers
題解:
🚨 UVa一定要用long long int否則會TLE🚨
這題其實最難的就是數學問題,你必須找出其規律才能寫出這個題目。
題目所給予的n是同一列有多少個奇數,此時奇數有一種特性就是當使用時可以表示這些奇數是在第幾列。
ex:我設定n=3 則使用得知這三個奇數位在第二列。之後我們可以觀察期規律如下
N = 3 時,在第 2 列,此時已經寫了 4 個奇數,且第 4 個奇數為 7 ( 此數亦為該列最後一個數字 )
N = 5 時,在第 3 列,此時已經寫了 9 個奇數,且第 9 個奇數為 17
N = 7 時,在第 4 列,此時已經寫了 16 個奇數,且第 16 個奇數為 31
所以我們可以使用來表示到了第列時總共有多少個奇數。再來我們需要算出此列末三項的總和所以我們可以在觀察到其實,之後再減二可以得到等差中項此時再就是末三項的總和了。
C++解法
1 2 3 4 5 6 7 8 9 10
| #include<iostream> using namespace std; int main(){ long long int n,sum; while (cin >> n) { sum = ((3*n*n)+(6*n) - 15 ) / 2 cout << sum << endl; } }
|
Python解法
1 2 3 4 5 6 7 8 9 10
| while(True): try: n=str(input()) if(n=="EOF"): T=False else: sum = ((3*int(n)*int(n))+(6*int(n)) - 15 ) // 2 print(sum) except: break
|