码迷,mamicode.com
首页 > 其他好文 > 详细

2014 Super Training #4 G What day is that day? --两种方法

时间:2014-07-02 21:31:21      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   strong   os   

原题: ZOJ 3785 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3785

题意:当天是星期六,问经过1^1+2^2+3^3....+n^n天后是星期几?

这题开始以为是这种式子的求和问题,翻了半天没翻到公式。结果没搞出来。后来发现有两种方法。

第一种方法: 找规律

打表可以看出,这些数的结果出现42一循环,所以直接就处理出前42个,后面的就用前面的。

代码:

bubuko.com,布布扣
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
using namespace std;
#define N 20007

int sum[44];
string ss[8] = {"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
void init()
{
    int n,i,j;
    sum[0] = 0;
    for(n=1;n<=44;n++)
    {
        int flag = n%7;
        int ans = 1;
        for(j=1;j<=n;j++)
            ans = (ans*flag)%7;
        sum[n] = ans;
    }
    for(i=1;i<=44;i++)
        sum[i] += sum[i-1];
}

int main()
{
    int i,j,t,n,ans;
    init();
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        ans = (((n/42)%7*(sum[42]%7))%7 + sum[n%42]%7)%7;
        cout<<ss[ans]<<endl;
    }
    return 0;
}
View Code

 

第二种方法: 矩阵乘法

有待更新

2014 Super Training #4 G What day is that day? --两种方法,布布扣,bubuko.com

2014 Super Training #4 G What day is that day? --两种方法

标签:style   blog   http   color   strong   os   

原文地址:http://www.cnblogs.com/whatbeg/p/3819054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!