#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int convert(char*); //取最後兩個數字
int main()
{
char a[100],b[100];
int m,n;
while(cin>>a>>b)
{
if(a[0]=='0'&&b[0]=='0')
break;
m=convert(a)%10;
n=(convert(b)-1)%4+1;
if(m==1||n==0)
cout<<1<<endl;
else if(m==0)
cout<<0<<endl;
else
{
cout<<int(pow(m,n))%10<<endl;
}
memset(a, '\0', sizeof(a));
memset(b, '\0', sizeof(b));
}
return 0;
}
int convert(char x[])
{
int s=strlen(x),a;
if(s>1)
{
a=(x[s-2]-'0')*10+x[s-1]-'0';
}
else
a=x[s-1]-'0';
return a;
}
程式碼如上
最後結果出來是
我的答案為1
正確答案為0
由於實在想不出來為什麼
只好放上來請教大家
謝謝
#include
#include
#include
using namespace std;
int convert(char*); //取最後兩個數字
int main()
{
char a[100],b[100];
int m,n;
while(cin>>a>>b)
{
if(a[0]=='0'&&b[0]=='0')
break;
m=convert(a)%10;
n=(convert(b)-1)%4+1;
if(m==1||n==0)
cout<<1<<endl;
else if(m==0)
cout<<0<<endl;
else
{
cout<<int(pow(m,n))%10<<endl;
}
memset(a, '\0', sizeof(a));
memset(b, '\0', sizeof(b));
}
return 0;
}
int convert(char x[])
{
int s=strlen(x),a;
if(s>1)
{
a=(x[s-2]-'0')*10+x[s-1]-'0';
}
else
a=x[s-1]-'0';
return a;
}
程式碼如上
最後結果出來是
我的答案為1
正確答案為0
由於實在想不出來為什麼
只好放上來請教大家
謝謝
HI 我照著你邏輯寫 這樣正確
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int cutDigit(string input);
int main()
{
string m, n;
while (cin >> m >> n)
{
int a, b;
a = cutDigit(m) % 10;
b = cutDigit(n);
if (a == 0 && b == 0 && m.length() == 1 && n.length() == 1)
break;
else if (a == 0)
{
cout << 0 << endl;
continue;
}
else if (b == 0)
{
cout << 1 << endl;
continue;
}
b = ((b - 1) % 4) + 1;
cout << (int)pow(a, b) % 10<< endl;
}
}
int cutDigit(string input)
{
int len = input.length();
if (len == 1)
return input[len - 1] - '0';
else
return ( (input[len - 2] - '0') * 10 ) + ( (input[len - 1]) - '0');
}
HI 我照著你邏輯寫 這樣正確 主要是判斷錯誤
if (a == 0 && b == 0 && m.length() == 1 && n.length() == 1) 這段 你直接判斷a[0] b[0]會錯 ex:輸入為 100 100
#include
#include
#include
using namespace std;
int cutDigit(string input);
int main()
{
string m, n;
while (cin >> m >> n)
{
int a, b;
a = cutDigit(m) % 10;
b = cutDigit(n);
if (a == 0 && b == 0 && m.length() == 1 && n.length() == 1)
break;
else if (a == 0)
{
cout << 0 << endl;
continue;
}
else if (b == 0)
{
cout << 1 << endl;
continue;
}
b = ((b - 1) % 4) + 1;
cout << (int)pow(a, b) % 10<< endl;
}
}
int cutDigit(string input)
{
int len = input.length();
if (len == 1)
return input[len - 1] - '0';
else
return ( (input[len - 2] - '0') * 10 ) + ( (input[len - 1]) - '0');
}
if(a[0]=='0'&&b[0]=='0')
break;
會錯應該是這個判斷 ex: 輸入為100 100 並非要跳出
if(m==1||n==0) << 應該要用&&
cout<<1<<endl;
else if(m==0)
cout<<0<<endl;
if(a[0]=='0'&&b[0]=='0')
break;
更正 我腦殘想錯了 這段沒錯 整數開頭不會是0