2017年9月25日 星期一

[UVa]10783 - Odd Sum(C++)

這題如果單純只使用迴圈累加會超過limit time,所以可以使用等差級數

先使用公式1找出項數n,再把n帶入公式2,算出等差級數。

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     int fir, end, n, a, b, N, S;  
  6.       //首項, 末項, 測資數量, a~b, 項數, 等差級數
  7.     cin >> n;  
  8.     for(int i = 0;i < n ;i++)  
  9.     {  
  10.         cin >> a >> b;  
  11.         if(a%2==0)   //如果首項是偶數,則a向前移一位
  12.         {  
  13.             a = a + 1;  
  14.         }  
  15.         if(b%2==0)  //如果末項是偶數,則b向後移一位
  16.         {  
  17.             b = b - 1;  
  18.         }  
  19.         N = (b - a)/2 + 1;  //公式1
  20.         S = (a + b)*N/2;    //公式2
  21.         cout << "Case " << i+1 << ": " << S <<endl;  
  22.     }  
  23.     return 0;  
  24. }  

沒有留言:

張貼留言