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

zjgsu第五场解题报告

时间:2016-08-03 21:46:04      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

 

B.hdu2522 A simple problem

求小数循环节的思路可以看看这个链接

http://www.cnblogs.com/hxsyl/p/3330481.html

1/n的循环节最多有(n-1)个数,只要用长除法得到第一次余数重复,前面的的商就是答案

n也可以是负数

技术分享
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>

using namespace std;

const int MAXN = 1e5+100;

int mark[MAXN];
int ans[MAXN];
int top,l;

void solve(int x){
    memset(mark,0,sizeof mark);
    top = l = 0;
    int s = 1,t;
    mark[1] = 1;
    while(s){
        t = s*10/x;
        s = s*10%x;
        ans[top++] = t;
        if(mark[s]){
            break;
        }
        mark[s] = 1;
    }
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        int n;
        scanf("%d",&n);
        if(n<0){cout<<"-";n = fabs(n);}
        if(n==1){
            cout<<1<<endl;
            continue;
        }
        solve(n);
        if(n==1){
            cout<<0<<endl;
            continue;
        }
        cout<<"0.";
        for(int i=0;i<top;i++)cout<<ans[i];
        cout<<endl;

    }
    //cout << "Hello world!" << endl;
    return 0;
}
View Code

 

D.poj3047 Bovine Birthday

求任意给定日期的是星期几

蔡勒公式套一下就可以了

技术分享
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

typedef long long ll;

/*计算任何日期为周几模板*/
int fun(int x,int y,int z){
    if(y<3){
        x-=1;
        y+=12;
    }
    int a = x/100,b = x-100*a;
    int w = a/4 - 2*a+b+b/4+(13*(y+1)/5)+z-1;
    w = (w%7+7)%7;
    return w;
}

int main()
{
    /*for(int i=1;i<13;i++){
        cout<<fun(2016,i,1)<<" ";
    }
    cout<<endl;*/
    int x,y,z;
    while(scanf("%d%d%d",&x,&y,&z)!=EOF){
        int w = fun(x,y,z);
        if(w==1)cout<<"monday"<<endl;
        else if(w==2)cout<<"tuesday"<<endl;
        else if(w==3)cout<<"wednesday"<<endl;
        else if(w==4)cout<<"thursday"<<endl;
        else if(w==5)cout<<"friday"<<endl;
        else if(w==6)cout<<"saturday"<<endl;
        else cout<<"sunday"<<endl;
    }
    //cout << "Hello world!" << endl;
    return 0;
}
View Code

 

F.poj2603 Brave balloonists

10个数的乘积sa 的所有因子个数(包括它本身)

思路:先将一个数可以化做素数的乘积形式

比如60 = 2^2 * 3^1 * 5^1

这样‘2‘可以提供(0,1,2)个2,‘3‘可以提供(0,1)个3,‘5‘可以提供(0,1)个5

所以60的所有因子个数就是 (2+1)*(1+1)*(1+1),ps.如果不包括本身的化最后要减去1

 

先打素数表,标记每个素数的个数,然后就可以得到答案

这题也是上一次的校赛题。。。

技术分享
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

const int MAXN = 1e4+100;

int a[10];
int p[MAXN],vis[MAXN],num[MAXN];
int cnt;

void isprime(){
    cnt = 0;
    for(int i=2;i<MAXN;i++){
        if(!vis[i]){
            p[cnt++] = i;
            for(int j=i*2;j<MAXN;j+=i){
                vis[j] = 1;
            }
        }
    }
}

int main(){

    isprime();
   // for(int j=0;j<5;j++)cout<<p[j]<<" ";
  // cout<<endl;
    for(int i=0;i<10;i++)scanf("%d",&a[i]);
    //int sum = 0;
    for(int i=0;i<10;i++){
        int t = a[i],k;
        for(int j=0;j<cnt&&p[j]<=t;j++){
            k = 0;
            if(t%p[j]==0){
                while(t%p[j]==0){
                    t/=p[j];
                    k++;
                }
                num[j] += k;
                //cout<<p[j]<<" ";
            }
        }
    }
    int sum = 1;
    for(int j=0;j<cnt;j++){
        if(num[j]){
            sum *= (1+num[j]);
            sum %= 10;
        }
    }
    //sum = (sum-1+10)%10;
    cout<<sum<<endl;


    return 0;
}
View Code

 

G.1563 Find your present!

题意:如果某个数只有奇数个,那这个数就是特殊数,输出这个数,本题应该只存在一个这样的数

可以用因为输入的数可能比较大,用数组下标表示的话会爆数组,可以用c++的map

还有一种方法是用异或 比如 3^5^3^4^4^4^4 最后结果就是3,将该序列异或,最后剩余的结果就是答案

技术分享
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

const int MAXN = 2e2+100;

int a[MAXN];

int main(){

    int n;
    while(scanf("%d",&n)!=EOF&&n){
        int ans = 0;
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
            ans ^= a[i];
        }
        cout<<ans<<endl;
    }


    return 0;
}
View Code

 

zjgsu第五场解题报告

标签:

原文地址:http://www.cnblogs.com/EdsonLin/p/5734363.html

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