NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2015國中組決賽
 npsc2015國中組決賽-E. 頗旺愛算樹

作者 主題: npsc2015國中組決賽-E. 頗旺愛算樹  (閱讀 678 次)

rscpp

  • 中級會員
  • ***
  • 文章數: 60
    • 檢視個人資料
npsc2015國中組決賽-E. 頗旺愛算樹
« 於: 一月 11, 2016, 08:54:47 pm »

不很確定哪些算 -1,若有問題請指正
為什麼不可以是 0^1 = 0
代碼: [選擇]
// npsc2015-j2e-power 國中決 E. 頗旺愛算樹
#include <iostream>
using namespace std;

int main(void)
{
long long int k,n,p;
long long int a,b;
while (cin >> a >> n )
{

if ( n==0 ) cout << -1 << endl;
else if( n==1 ) cout << 0 << endl;
else if( a==1 && n!=1 )  cout << -1 << endl;
else if( a>n )  cout << -1 << endl;
else
{
b=n/a;
p=a;
k=1;
while(p<=b)
{
p*=a;
++k;
}
cout << k << endl;
}

}

return 0;
}
/*
0 0
5 1
1 2
2 2
2 3
2 2147483647
3 2
----out
-1
0
-1
1
1
30
-1
*/

記錄

rscpp

  • 中級會員
  • ***
  • 文章數: 60
    • 檢視個人資料
Re: npsc2015國中組決賽-E. 頗旺愛算樹
« 回覆 #1 於: 一月 28, 2016, 11:41:22 pm »

這是npsc官網上提供的參考解
代碼: [選擇]
// npsc2015-j2e-power 國中決 E. 頗旺愛算樹
#include <iostream>
using namespace std;
typedef long long ll;
 ll cal( ll ta , ll tb )
 {
  if( ta <= 1 || tb == 0 ) return -1;
ll ans = 0;
while( tb >= ta ) ans ++, tb /= ta;
  return ans;
}

int main(void)
{
long long int a,n;
cin >> a >> n;
cout << cal(a,n) << endl;
return 0;
}
/*
2 1000000000000000000
10000000000000008 10000000000000007
0 245773583
1 0
1 1
1 1000000000000000000
0 514
1000000000000000000 999999999999999999
0 1000000000000000000
23948029384902 313376348425861413

----out
59
0
-1
-1
-1
-1
-1
0
-1
1

*/

記錄
+ NPSC補完計劃 » NPSC國中組 » NPSC2015國中組決賽
 npsc2015國中組決賽-E. 頗旺愛算樹