#include <stdio.h>
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
long int a,i,b,d; //a是計次變數(指數的);i是第幾位數之變數;b是計次變數(輸出的);d是位數-1,即陣列的最大值
long long int n,m,v,s; //n是底數;m是指數;v是進位暫存變數;s用來記錄整數位數
while(cin >> n >> m)
{
if(n==0 && m==0)
break;
long long int x[100000]={0}; //宣告int x陣列
v=0; //清空v的值
s=1; //不管怎麼樣,s必會大於等於1,因為整數一定有位數
x[0]=1; //先讓最早要乘的這格陣列值等於1
for(a=1;a<=m;a++)
{
for(i=0;i<s;i++)
{
x[i]=x[i]*n+v; //各個位數運算式,v是有進位時要加上去的
v=x[i]/1000000000; //v若大於0,則需進位
x[i]=x[i]%1000000000; //每格陣列存九位數
if(v!=0&&i+1==s) //判斷陣列是否+1
s++; //記錄陣列位數
}
}
for(b=s-1;b>=0;b--) //反向輸出
{
if(b!=s-1) //最前面的陣列前面不能補0
cout << setfill('0') << setw(9) << x[b];
else //最前面的陣列輸出
cout << x[b];
}
cout << '\n'; //換行
}
return 0;
}
#include
#include
#include
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
long int a,i,b,d; //a是計次變數(指數的);i是第幾位數之變數;b是計次變數(輸出的);d是位數-1,即陣列的最大值
long long int n,m,v,s; //n是底數;m是指數;v是進位暫存變數;s用來記錄整數位數
while(cin >> n >> m)
{
if(n==0 && m==0)
break;
long long int x[100000]={0}; //宣告int x陣列
v=0; //清空v的值
s=1; //不管怎麼樣,s必會大於等於1,因為整數一定有位數
x[0]=1; //先讓最早要乘的這格陣列值等於1
for(a=1;a<=m;a++)
{
for(i=0;i<s;i++)
{
x[i]=x[i]*n+v; //各個位數運算式,v是有進位時要加上去的
v=x[i]/1000000000; //v若大於0,則需進位
x[i]=x[i]%1000000000; //每格陣列存九位數
if(v!=0&&i+1==s) //判斷陣列是否+1
s++; //記錄陣列位數
}
}
for(b=s-1;b>=0;b--) //反向輸出
{
if(b!=s-1) //最前面的陣列前面不能補0
cout << setfill('0') << setw(9) << x[b];
else //最前面的陣列輸出
cout << x[b];
}
cout << '\n'; //換行
}
return 0;
}
還是可以過得呀???沒問題的!
blog的code似乎宣告太大的陣列了,改小一點就AC了
/*8.9s,808KB*/
#include<iostream> #include<iomanip> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); long int a,i,b; long long int n,m,v,s; while(cin>>n>>m&&n&&m){ long long int x[55560]={0}; v=0; s=1; x[0]=1; for(a=1;a<=m;a++) { for(i=0;i<s;i++) { x[i]=x[i]*n+v; v=x[i]/1000000000; x[i]=x[i]%1000000000; if(v!=0&&i+1==s) s++; } } for(b=s-1;b>=0;b--) { if(b!=s-1) cout << setfill('0') << setw(9) << x[b]; else cout << x[b]; } cout <<'\n'; } }
#include
#include
#include
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
long int a,i,b,d; //a是計次變數(指數的);i是第幾位數之變數;b是計次變數(輸出的);d是位數-1,即陣列的最大值
long long int n,m,v,s; //n是底數;m是指數;v是進位暫存變數;s用來記錄整數位數
while(cin >> n >> m)
{
if(n==0 && m==0)
break;
long long int x[100000]={0}; //宣告int x陣列
v=0; //清空v的值
s=1; //不管怎麼樣,s必會大於等於1,因為整數一定有位數
x[0]=1; //先讓最早要乘的這格陣列值等於1
for(a=1;a<=m;a++)
{
for(i=0;i<s;i++)
{
x[i]=x[i]*n+v; //各個位數運算式,v是有進位時要加上去的
v=x[i]/1000000000; //v若大於0,則需進位
x[i]=x[i]%1000000000; //每格陣列存九位數
if(v!=0&&i+1==s) //判斷陣列是否+1
s++; //記錄陣列位數
}
}
for(b=s-1;b>=0;b--) //反向輸出
{
if(b!=s-1) //最前面的陣列前面不能補0
cout << setfill('0') << setw(9) << x[b];
else //最前面的陣列輸出
cout << x[b];
}
cout << '\n'; //換行
}
return 0;
}
還是可以過得呀???沒問題的!
blog的code似乎宣告太大的陣列了,改小一點就AC了
/*8.9s,808KB*/
#include #include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); long int a,i,b; long long int n,m,v,s; while(cin>>n>>m&&n&&m){ long long int x[55560]={0}; v=0; s=1; x[0]=1; for(a=1;a<=m;a++) { for(i=0;i<s;i++) { x[i]=x[i]*n+v; v=x[i]/1000000000; x[i]=x[i]%1000000000; if(v!=0&&i+1==s) s++; } } for(b=s-1;b>=0;b--) { if(b!=s-1) cout << setfill('0') << setw(9) << x[b]; else cout << x[b]; } cout <<'\n'; } }
謝謝!!!