#9266: 想法與解析


simultaneously (----------以上是高手------------)

學校 : 高雄市立新莊高級中學
編號 : 37268
來源 : [1.200.206.195]
最後登入時間 :
2018-12-01 11:50:33
d361. 10515 - Power et al. -- UVa10515 | From: [111.254.230.198] | 發表日期 : 2014-09-30 20:37

 //因為只要找最後一位數
所以只要不斷重複乘以最後一位數就好 
#include<cstdio>
#include<string.h>
#include<cmath>
int pd(char x[]){
    int m=0,s=strlen(x);
    for(int i=0;i<s;i++)
     m+=x[i]-'0'; 
    return m; 
    }
int max(int x){
   if(x==0||x==1||x==5||x==6) return 1;
   else if(x==2||x==3||x==7||x==8) return 2;
   else return 3;
    }
int main(){
    char x[120],y[120];
    while(~scanf("%s%s",&x,&y)){
     int s1=pd(x),s2=pd(y);
    if(s1==0&&s2==0) break;
   if(s2==0) printf("1\n");
   else if(s1==0) printf("0\n");
   else{
   int s3=y[strlen(y)-1]-'0';
   if(strlen(y)>1) s3+=10*(y[strlen(y)-2]-'0');
   int fact=x[strlen(x)-1]-'0';
    if(max(fact)==1) printf("%d\n",fact);
    else if(max(fact)==2) printf("%d\n",((int)pow(fact,s3%4+4))%10);  
   else printf("%d\n",((int)pow(fact,s3%2+2))%10); 
    }  
}}紅色字很重要否則會出錯

 
#9574: Re:想法與解析


z3x56 (二信阿資)

學校 : 基隆市私立二信高級中學
編號 : 41061
來源 : [61.231.128.29]
最後登入時間 :
2020-08-22 18:35:15
d361. 10515 - Power et al. -- UVa10515 | From: [49.159.137.154] | 發表日期 : 2015-01-01 00:49

 
題中 m,n 範圍?
「 每組測試資料一列,有2個整數m、n,均小於10101 」
是說分別 m<小於10101  n<小於10101 ?
樓上的程式若可AC,應是題目說明有爭議吧!
 
會不會題意是說 m, n , 及 m^n 三者均小於10101
 
#9575: Re:想法與解析


z3x56 (二信阿資)

學校 : 基隆市私立二信高級中學
編號 : 41061
來源 : [61.231.128.29]
最後登入時間 :
2020-08-22 18:35:15
d361. 10515 - Power et al. -- UVa10515 | From: [49.159.137.154] | 發表日期 : 2015-01-01 01:11

 
題中 m,n 範圍?
「 每組測試資料一列,有2個整數m、n,均小於10101 」
是說分別 m<小於10101  n<小於10101 ?
樓上的程式若可AC,應是題目說明有爭議吧!
 
會不會題意是說 m, n , 及 m^n 三者均小於10101

 

對不起,後來發現,題意應該沒問題!

 

因為X最後一位數的次方,{4,9}二次方循環,{2,3,7,8}四次方循環
所以Y只要判斷後兩位數即可!

小弟我一開始沒看清楚,打擾了! 

 
ZeroJudge Forum