九度OJ 1506 求1+2+3+...+n(位運算)

題目1506:求1+2+3+...+n

時間限制:1 秒

內存限制:128 兆

特殊判題:

提交:1633

解決:932

題目描述點擊打開鏈接

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

輸入:

輸入可能包含多個測試樣例。
對於每個測試案例,輸入爲一個整數n(1<= n<=100000)。

輸出:

對應每個測試案例,
輸出1+2+3+…+n的值。

樣例輸入:
3
5
樣例輸出:
6
15

思路:

          &&的短路特性:

          A&&B中,假如A爲假,那麼B就不會被運算。

          因此我們只要將 遞歸放在B中,而將終止條件放在A中即可解決該問題。

代碼:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef long long int LL;
LL add(LL a,LL &sum)
{
	a&&add(a-1,sum);
	return sum+=a;
}
int main()
{
   LL n;
   while(~scanf("%lld",&n))
   {
   	LL ans=0;
   	add(n,ans);
   	printf("%lld\n",ans);
   }
   return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章