这代码哪里错了呀qwq

img


这到底哪里错了呀qwq我刚学c++ 想破脑袋也不知道哪里错了qwq

没看明白,输入的两个数各自是啥意思?
假设今天是星期日,这是确定的?还是输入的?

输入两个整数a,b,ab分别表示什么,过去的天数?今天星期几?

估计是答案溢出了,a^b 过大存不了。


#include <bits/stdc++.h>

using namespace std;

long long a, b, c, d;

int main() {
    cin >> a >> b;

    c = d = a;

    for (int i = 1; i < b; i++) {
        d = a;

        d *= c;

        c = d % 7;//取余 
    }

    if (c == 1)
    {
        cout << "Monday";
    }
    if (c == 2)
    {
        cout << "Tuesday";
    } 
    if (c == 3)
    {
        cout << "Wednesday";
    }
    if (c == 4)
    {
        cout << "Thursday";
    }
    if (c == 5)
    {
        cout << "Friday";
    }
    if (c == 6)
    {
        cout << "Saturday";
    }
    if (c == 0)
    {
        cout << "Sunday";
    }
    
    return 0;
}

信息学奥赛一本通1083正确代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,i,f=1;
cin>>a>>b;
for(i=1;i<=b;i++)
{
f=f*a;
f=f%7;
}
switch(f)
{
case 1:cout<<"Monday";break;
case 2:cout<<"Tuesday";break;
case 3:cout<<"Wednesday";break;
case 4:cout<<"Thursday";break;
case 5:cout<<"Friday";break;
case 6:cout<<"Saturday";break;
case 0:cout<<"Sunday";break;
}
return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
  long long a,b,g,i;
  cin>>a>>b;
  g=a;
  for(i=2;i<=b;i++)
  {
	a*=g;
	a%=7;  	
  }	
  switch(a)
  {
  	case 1:
  		printf("Monday"); 
  		break;
  	case 2:
  		printf("Tuesday");
  		break;
  	case 3:
  		printf("Wednesday");
  		break;
  	case 4:
  		printf("Thursday");
  		break;
  	case 5:
  		printf("Friday");
  		break;
  	case 6:
  		printf("Saturday");
  		break;
  	case 0:
  		printf("Sunday");
  		break;
  }
  return 0;
}

我不会!!!!!!!!!