zoukankan      html  css  js  c++  java
  • BestCoder Round #33

    1. zhx's submissions
    问题描述
    作为史上最强的刷子之一,zhx在各大oj上交了很多份代码,而且多数都AC了。
    有一天,zhx想数一数他在n个oj上一共交了多少份代码。他现在已经统计出在第i个oj上,他交了ai份代码。而把它们加起来就是你的工作了。
    当然zhx是一个不走寻常路的人,所以他的数字都是用B进制表示的。而他也要求你告诉他B进制的数。
    但是zhx有一个恶趣味的习惯,他算加法的时候从来不进位。比如他算十进制5+6的答案是1。而且他还要求你也要按照他的方式来做加法。
    输入描述
    多组数据(不超过1000组)。读到文件尾。
    对于每组数据,第一行是两个空格分开的正整数nB(1n100, 2B36)
    接下来n行,每行一个B进制数ai。数码是0到9和小写a到z。输入可能包含前导0,数字长度不超过200位。
    思路:直接模拟高精度:
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 int main()
     6 {
     7     int n,b;
     8     while(scanf("%d%d",&n,&b)!=EOF)
     9     {
    10         char ch[500];
    11         int ans[500]={0},a[500]={0};
    12         while(n--)
    13         {
    14                         memset(a,0,sizeof(a));
    15             scanf("%s",ch+1);
    16             int len=strlen(ch+1);
    17             for(int i=1;i<=len;i++)
    18             {
    19                 if('0'<=ch[i]&& ch[i]<='9')a[len-i+1]=ch[i]-'0';
    20                 else a[len-i+1]=ch[i]-'a'+10;
    21             }
    22             for(int i=1;i<=max(len,ans[0]);i++)
    23             {
    24                 ans[i]=(ans[i]+a[i])%b;
    25             }
    26             ans[0]=max(ans[0],len);
    27         }
    28         while(ans[ans[0]]==0 &&ans[0]>=2)ans[0]--;
    29         for(int i=ans[0];i>=1;i--)
    30         {
    31             if(ans[i]>=10)printf("%c",'a'+ans[i]-10);
    32             else printf("%d",ans[i]);
    33         }
    34         printf("
    ");
    35     }
    36     return 0;
    37 }
    View Code

    2.zhx's contest

    问题描述
    作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题。
    zhx认为第i道题的难度就是i。他想要让这些题目排列起来很漂亮。
    zhx认为一个漂亮的序列{ai}下列两个条件均需满足。
    1:a1..ai是单调递减或者单调递增的。
    2:ai..an是单调递减或者单调递增的。
    他想你告诉他有多少种排列是漂亮的。
    因为答案很大,所以只需要输出答案模p之后的值。
    输入描述
    多组数据(不多于1000组)。读到文件尾。
    每组数据包含一行两个整数np。(1n,p1018
    输出描述
    每组数据输出一行一个非负整数表示答案。

    思路:2^n-2很明显,然后就是p在1e18 直接搞必定超long long,然后搞个快速乘法就可以了注意 1 1 这组神奇的数据

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 long long mul(long long x,long long y,long long p)
     6 {
     7     long long e=0;
     8     for(;y;y>>=1)
     9     {
    10         if(y&1)e=(e+x)%p;
    11         x=(x+x)%p;
    12     }
    13     return e;
    14 }
    15 long long mpow(long long x,long long y,long long p)
    16 {
    17     long long e=1;
    18     for(;y;y>>=1)
    19     {
    20         if(y&1)e=mul(e,x,p);
    21         x=mul(x,x,p);
    22     }
    23     return e;
    24 }
    25 int main()
    26 {
    27     long long n,p;
    28     while(scanf("%I64d%I64d",&n,&p)!=EOF)
    29     {
    30         if(n==1)printf("%d
    ",1%p);else
    31         printf("%I64d
    ",(mpow(2,n,p)-2+p)%p);
    32     }
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    数据结构:关于重建二叉树的三种思路
    操作系统:进程调度算法详解之FCFS和SPF篇
    Java反射机制浅析
    数据挖掘:基于TF-IDF算法的数据集选取优化
    RC隔离 更新where条件列 没有索引的情况
    RR区间锁 不是唯一索引,即使区间内没值,也锁
    If one session has a shared or exclusive lock on record R in an index, another session cannot insert
    RR模式下利用区间锁防止幻读,RC模式没有区间锁会出现幻读
    使用next-key locks 用于搜索和索引扫描,可以防止幻读
    Gap Locks 区间锁
  • 原文地址:https://www.cnblogs.com/philippica/p/4338405.html
Copyright © 2011-2022 走看看