解题思路:
题目描述
假设今天是星期日,那么过ab天之后是星期几?
输入格式
两个正整数a,b,中间用单个空格隔开。0<a≤100, 0<b≤10000。
输出格式
一个字符串,代表过ab天之后是星期几。
其中,Monday是星期一,Tuesday是星期二,Wednesday是星期三,Thursday是星期四,Friday是星期五,Saturday是星期六,Sunday是星期日。
样例输入
复制
3 2000
样例输出
复制
Tuesday
提示
注意数据大小
注意事项:若令a^b=n,如果定义n为int类型,那么如果n过大 那么就会出现数值溢出的情形 由此 我放弃了用pow函数来计算次方值,而是选择了for循环来每轮对7求余来缩小n的值,避免了大数字运算 为什么要将n定义为long long类型 原因就是它比int可以储存更大的数值 我用的for循环和if-else语句,当然也可以用Switch语句
参考代码:
11111111
#include <stdio.h>
#include <math.h>
int main(void)
{
int a,b;
long long n=1;
scanf("%d %d",&a,&b);
for (int i=0; i<b; i++) {
n=(n*a)%7;//简化运算
}
// printf("%lld",n);
if (n==1) {
printf("Monsday");
}else if (n==2) {
printf("Tuesday");
}else if (n==3) {
printf("Wednesday");
}else if (n==4) {
printf("Thursday");
}else if (n==5) {
printf("Friday");
}else if (n==6) {
printf("Saturday");
}else{
printf("Sunday");
}
return 0;
}
2222222
#include <stdio.h>
#include <math.h>
int main()
{
long long c=1;//定义天数;
int a,b;
scanf("%d %d",&a,&b);
for(int i=1;i<=b;i++){
c*=a;//计算a的b次方的天数;
c%=7;//模7求最后的余数,判断星期几;
}
switch(c)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
default:
printf("Sunday\n");
break;
}
return 0;
}
0.0分
0 人评分