zjgsu第五场解题报告

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;
}

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;
}

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;
}

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;
}

时间: 2024-07-30 10:18:36

zjgsu第五场解题报告的相关文章

2019模拟赛09场解题报告

目录 2019模拟赛09场解题报告 目录la~~ 题一:瞬间移动 题二:食物订购 题三:马蹄印 题四:景观美化 2019模拟赛09场解题报告 标签(空格分隔): 解题报告 Forever_chen 2019.8.20 目录la~~ 题一:瞬间移动 [题面] 有一天,暮光闪闪突然对如何将一个整数序列a1,a2,...,an排序为一个不下降序列起了兴趣.身为一只年轻独角兽的她,只能进行一种叫做"单元转换"(unit shift)的操作.换句话说,她可以将序列的最后一个元素移动到它的起始位置

解题报告——2018级2016第二学期第五周作业排座椅

解题报告--2018级2016第二学期第五周作业 F:排座椅 描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来 之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设 置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅

解题报告—— 2018级2016第二学期第五周作业 删数问题

解题报告--  2018级2016第二学期第五周作业 删数问题 描述 键盘输入一个高精度的正整数n(<=240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小. 输入ns输出最后剩下的最小数样例输入 178543 4 样例输出 13 分析: 这题题目上已表明是贪心算法:原本最容易产生的错误贪心准则是删去其中最大的数字:但通过简单举例便可得之,这种贪心准则要漏洞:通过简单的计算举例发现如果这个数是一位比一位大的话

暑假第二次考试 冲刺Noip2017模拟赛2 解题报告——五十岚芒果酱

题1 牛跑步(running) [题目描述] 新牛到部队,CG 要求它们每天早上搞晨跑,从 A 农场跑到 B 农场.从 A 农场到 B 农场中有 n-2 个路口,分别标上号,A 农场为 1 号,B 农场为 n 号,路口分别为 2...n-1 号,从 A 农场到 B 农场有很多条路径可以到达,而 CG 发现有的路口是必须经过的,即每条路径都经过的路口,CG 要把它们记录下来,这样 CG 就可以先到那个路口,观察新牛们有没有偷懒,而你的任务就是找出所有必经路口. [输入格式] 第一行两个用空格隔开的

人生第一场CTF的解题报告(部分)

解题报告 濮元杰部分: 王者归来: 120 场景 小王入职了一段时间,最近有点无聊.Web安全项目不多,白天看着其他项目组的同事忙得热火朝天,小王有点坐不住了,这也许是新人都会有的想法,乐于助人.想到这,小王一眼看到了隔壁的小丽,哎,IT界小丽绝对算得上是一位美女啦,于是小王凑了过去对小丽说:小丽,看你眉头紧锁的,需要本大侠帮忙吗?小丽转头看着小王,愣了足足有10秒,突然说:那,那好吧,如果你帮我搞定这三个问题,嗯~我请你吃晚饭,就我们两个.天哪,这,这,小王已经按耐不住突如其来的喜悦,战斗力倍

CUGBACM_Summer_Tranning 组队赛解题报告

组队赛解题报告: CUGBACM_Summer_Tranning 5:组队赛第五场 CUGBACM_Summer_Tranning 4: CUGBACM_Summer_Tranning 3:组队赛第三场 CUGBACM_Summer_Tranning 2:组队赛第二场 CUGBACM_Summer_Tranning 1:组队赛第一场 CUGBACM_Summer_Tranning 组队赛解题报告

2020-3-14 acm训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019 解题报告+补题报告

2020-3-15比赛解题报告+2020-3-8—2020-3-15的补题报告 2020-3-15比赛题解 训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019  A建筑(模拟) 耗时:3ms 244KB 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

解题报告 之 POJ3057 Evacuation

解题报告 之 POJ3057 Evacuation Description Fires can be disastrous, especially when a fire breaks out in a room that is completely filled with people. Rooms usually have a couple of exits and emergency exits, but with everyone rushing out at the same time

【未完成0.0】Noip2012提高组day2 解题报告

第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一行,包含两个正整数a, b,用一个空格隔开. 输出格式 输出只有一行,包含一个正整数x0,即最小正整数解.输入数据保证一定有解. 样例1 样例输入1 3 10 样例输出1 7 限制 每个测试点1s 提示 对于40%的数据,2 ≤b≤ 1,000: 对于60%的数据,2 ≤b≤ 50,000,000: