#13701: 拜託幫我將錯誤糾正


jackyname1@gmail.com (☆♬○♩程式家小崴●♪✧♩)

學校 : 基隆市私立二信高級中學
編號 : 77382
來源 : [114.32.51.178]
最後登入時間 :
2022-04-12 19:45:18
b901. 7. 森林呼喚 -- 2016高雄市資訊學科能力複賽 | From: [114.25.71.151] | 發表日期 : 2018-04-09 21:22

過不了~~~

第四組測資 算不出來

拜託幫我將錯誤糾正 <<< thanks !!!!!!


#include <stdio.h>
#include <iostream>
using namespace std;

int dig[] = {1, 1, 2, 6, 4, 2, 2, 4, 2, 8};

int lastNon0Digit(int n)
{
if (n < 10)
return dig[n];

// Check whether tens (or second last) digit
// is odd or even
// If n = 375, So n/10 = 37 and (n/10)%10 = 7
// Applying formula for even and odd cases.
if (((n/10)%10)%2 == 0)
return (6*lastNon0Digit(n/5)*dig[n%10]) % 10;
else
return (4*lastNon0Digit(n/5)*dig[n%10]) % 10;
}

int main()
{
int n,m;
while(cin>>n){
while(n--){
cin>>m;
cout<<lastNon0Digit(m)<<endl;
}
}

return 0;
}

 
#13703: Re:拜託幫我將錯誤糾正


justinO__o (夜貓)

學校 : 臺北市立成功高級中學
編號 : 51052
來源 : [61.216.80.115]
最後登入時間 :
2023-12-25 15:06:44
b901. 7. 森林呼喚 -- 2016高雄市資訊學科能力複賽 | From: [223.136.252.227] | 發表日期 : 2018-04-10 23:22

過不了~~~

第四組測資 算不出來

拜託幫我將錯誤糾正 <<< thanks !!!!!!


#include
#include
using namespace std;

int dig[] = {1, 1, 2, 6, 4, 2, 2, 4, 2, 8};

int lastNon0Digit(int n)
{
if (n < 10)
return dig[n];

// Check whether tens (or second last) digit
// is odd or even
// If n = 375, So n/10 = 37 and (n/10)%10 = 7
// Applying formula for even and odd cases.
if (((n/10)%10)%2 == 0)
return (6*lastNon0Digit(n/5)*dig[n%10]) % 10;
else
return (4*lastNon0Digit(n/5)*dig[n%10]) % 10;
}

int main()
{
int n,m;
while(cin>>n){
while(n--){
cin>>m;
cout<<lastNon0Digit(m)<<endl;
}
}

return 0;
}




好像要long long

 
#16278: Re:拜託幫我將錯誤糾正


rollfc (胖胖貓)

學校 : 國立清華大學
編號 : 81012
來源 : [36.229.39.123]
最後登入時間 :
2024-04-23 19:32:49
b901. 7. 森林呼喚 -- 2016高雄市資訊學科能力複賽 | From: [114.34.219.44] | 發表日期 : 2018-12-15 03:48

不好意思 想藉文章串討論問一下這個規律是怎麼推導出來的

因為這題和 c055: 00568 - Just the Facts 題目敘述是一樣但問題是測資範圍大了許多

網路上找到的答案有兩種 一種是做質因數分解,先把2和5的因數濾出來相互消去,最後再乘回去

另一種是只說保留最後六位數即可(但原因皆不解釋或只會直呼好神奇....)

顯然上述兩種方法皆無法處理這個問題,所以想問一下這個規律是怎麼推導出來的

先謝謝高手們的回覆

 
 
ZeroJudge Forum