日记

2024.4.14

洛谷B2074 计算星期几

void f(int *num,int power,int *ans){
    *num=*num%7;
    for(int i=1;i<=power;i++){
        (*ans)*=(*num);
        (*ans)%=7;
    }
}
int main(){
    int num=0,power=0,ans=1;
    scanf("%d%d",&num,&power);
    f(&num,power,&ans);
    if(ans==0||ans==7) printf("Sunday");
    else if(ans==1) printf("Monday");
    else if(ans==2) printf("Tuesday");
    else if(ans==3) printf("Wednesday");
    else if(ans==4) printf("Thursday");
    else if(ans==5) printf("Friday");
    else if(ans==6) printf("Saturday");
    return 0;
}
其上代码中,对于一个极大的幂函数,采用循环进行解决,找到规律,然后运用规律不断抵消次数,最终可得出答案

类似地,我们看下面这题B2075 幂的末尾:

include<stdio.h>

void f(int num,int power,int ans){
for(int i=0;i<power;i++){
(
ans)=num;
(
ans)%=1000;
}
}
int main(){
int num=0,power=0,ans=1;
scanf("%d%d",&num,&power);
f(num,power,&ans);
if(ans<10) printf("00%d",ans);
else if(ans<100) printf("0%d",ans);
else if(ans<1000) printf("%d",ans);
return 0;
}

这题也是面对一个极大的幂函数求结果,采用循环的方式,每次乘一次变量,再把所求的末三位留下来,这样就省去了很大的不必要的空间,进而算出答案

posted @ 2024-04-14 12:57  pengfu_xin  阅读(12)  评论(0编辑  收藏  举报