ZOJ-3785

短命女 2022-05-26 03:45 257阅读 0赞

What day is that day?


Time Limit: 2 Seconds Memory Limit: 65536 KB


It’s Saturday today, what day is it after 11 + 22 + 33 + … + NN days?

Input

There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:

There is only one line containing one integer N (1 <= N <= 1000000000).

Output

For each test case, output one string indicating the day of week.

Sample Input

  1. 2
  2. 1
  3. 2

Sample Output

  1. Sunday
  2. Thursday

Hint

A week consists of Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday.

题意:今天是周六,求1+2^2+3^3+…………n^n天后是周几;

思路:题目其实不难,一眼就可以看出来是找规律的题,也可以打表,但是如果打表的数据太小是找不到规律的,当我们把打表的值打到294时可以看到在后面就是对前面的循环,所以就可以得到规律;

代码:

  1. #include<queue>
  2. #include<cmath>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<cstdlib>
  6. #include<iostream>
  7. #include<algorithm>
  8. using namespace std;
  9. #define ll long long
  10. int b[1000];
  11. char a[10][10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
  12. int main()
  13. {
  14. memset(b,0,sizeof(b));
  15. ll i,j,sum=0,ans=0;
  16. for(i=1;i<295;i++)
  17. {
  18. ans=1;
  19. for(j=1;j<=i;j++)
  20. {
  21. ans*=i;
  22. ans%=7;
  23. }
  24. b[i]=ans+b[i-1];
  25. }
  26. // for(i=1;i<295;i++)
  27. // printf("%d ",b[i]%7);
  28. // printf("\n");
  29. int test;
  30. scanf("%d",&test);
  31. while(test--)
  32. {
  33. long long n,ans1=0;
  34. scanf("%lld",&n);
  35. ans1=b[n%294]%7;
  36. printf("%s\n",a[ans1]);
  37. }
  38. return 0;
  39. }

发表评论

表情:
评论列表 (有 0 条评论,257人围观)

还没有评论,来说两句吧...

相关阅读

    相关 zoj1002

    [题目传送门][Link 1] 题目大意: 在一个最大为4\4的方格内建blockhouse( 碉堡) 但是有条件 1. 两个及以上blockhouse不能

    相关 Zoj 2947——Abbreviation

    呵呵哒,一开始觉的很难,是因为题长,以后不能被长题再坑了!后来耐下性子读,才发现就是让比对缩写是否相同,我用字符数组写的,当时还开了二维数组,现在想来,实在是笨,不好意思再贴!

    相关 ZOJ 3941

    题意:有n(10)段时间,会举行party,每个party有开始时间,结束时间,不同party举行时间可能重复。(时间范围为1~1e9) 我们一共最多可以参加m(1e9)