UVA 11384 Help is needed for Dexter (找規律)

題意:給一個正整數序列1,2,3....,n。每次操作可以從序列中選取任意多個數字同時減去一個相同的正整數,問至少多少次操作可以把所有數字變成0.

思路:首先,例如,1,2,3,0,1,2我們可以等價成1,2,3,。經過自己操作可以發現,第一次時把[n/2+1n,]減去n/2+1最好,這時會得到序列1,2,3.....n/2,0,1,2,...(n-1)/2.,它等價於1,2,3...n/2. 因此我們得到:f(n)=f(n/2)+1;  f(1)=1。

#include<cstdio>
int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		int ans=0;
		while(n) n/=2,++ans;
		printf("%d\n",ans);
	}
	return 0;
}


發佈了39 篇原創文章 · 獲贊 30 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章