程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 4952 Number Transformation (找規律)

HDU 4952 Number Transformation (找規律)

編輯:C++入門知識

HDU 4952 Number Transformation (找規律)


 

進行K次操作,第i次操作是把X變成不小於X的最大整數,並且X是i的倍數。經過K次操作後就X的值。

紅果果的暴力是會超時的。暴力打表發現在12000之後出現規律。之後的兩兩之間差恆定了。

 

 

 

AC代碼:

 

 

#include
#define ll __int64
const ll maxn=120000;

int main()
{
	ll i;
	ll x,k;
	int cas=1;
	while(scanf(%I64d %I64d,&x,&k)!=EOF)
	{
		if(x==0 && k==0)
			break;
		printf(Case #%d: ,cas++);
		if(k<=maxn)
		{
			for(i=1;i<=k;i++)
				if(x%i!=0) x=i*(x/i+1);
			printf(%I64d
,x);
		}
		else
		{
			ll y;
			for(i=1;i<=maxn;i++)
				if(x%i!=0) x=i*(x/i+1);
			y=i*(x/i+1);
			printf(%I64d
,x+(k-maxn)*(y-x));
		}
	}

	return 0;
}


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved