又逢校内测,成绩变化大

初见三道题,暗喜AK辣

谁知数据毒,特判不到家

三题两题WA,心态已爆炸

T1(我不想再见到这道题):

附上多年前AC但是随便出(毒瘤)一组数据就可以卡掉的代码:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[];
int main()
{
int n,i;
cin>>n;
for(i=n;i>=;i--)
{
cin>>a[i];
}
for(i=n;i>=;i--)
{ if(a[i]!=)
{
if(i==n)
{
if(a[i]==||a[i]==-)
{
if(a[i]==)
cout<<"x^"<<i;
if(a[i]==-)
cout<<"-x^"<<i;
}
else
cout<<a[i]<<"x^"<<i;
}
if(i!=n&&i!=&&i!=)
{
if(a[i]==||a[i]==-)
{
if(a[i]==)
cout<<"+x^"<<i;
if(a[i]==-)
cout<<"-x^"<<i;
}
else if(a[i]>)
cout<<"+"<<a[i]<<"x^"<<i;
else if(a[i]<)
cout<<a[i]<<"x^"<<i;
}
if(i==)
{
if(a[i]==||a[i]==-)
{
if(a[i]==)
{
cout<<"+x";
}
if(a[i]==-)
{
cout<<"-x";
}
}
else if(a[i]>)
cout<<"+"<<a[i]<<"x";
else if(a[i]<)
cout<<a[i]<<"x";
}
if(i==)
{
if(a[i]>)
{
cout<<"+"<<a[i];
}
if(a[i]<)
{
cout<<a[i];
}
}
} }
return ;
}

这是之前的码风

这里的毒瘤数据指的是首项为零,(然鹅首项为零就不是n次不等式了...多虑导致WA)

越想越觉得得抽自己一巴掌...

T2:

世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根 据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150% (向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

AC了,且无需多言,上代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
struct peo{
int id,sc;
}p[];
inline bool cmp(const peo &a,const peo &b){
if(a.sc!=b.sc) return a.sc>b.sc;
return a.id<b.id;
}
int main(){
//freopen("score.in","r",stdin);
//freopen("score.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d%d",&p[i].id,&p[i].sc);
sort(p+,p++n,cmp);
int name=int(m*1.5);
int line=p[name].sc;
while(p[name+].sc==line)
name++;
printf("%d %d\n",line,name);
for(int i=;i<=name;i++)
printf("%d %d\n",p[i].id,p[i].sc);
return ;
}

现在码风多好...不接受反驳

T3:

Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实 验做准备工作:培养细胞样本。 Hanks 博士手里现在有 N 种细胞,编号从 1~N,一个第 i 种细胞经过 1 秒钟可以分裂为 Si 个同种细胞(Si 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂, 进行培养。一段时间以后,再把培养皿中的所有细胞平均分入 M 个试管,形成 M 份样本, 用于实验。Hanks 博士的试管数 M 很大,普通的计算机的基本数据类型无法存储这样大的 M 值,但万幸的是,M 总可以表示为 m1的 m2 次方,其中 m1,m2 均为基本 数据类型可以存储的正整数。 注意,整个实验过程中不允许分割单个细胞,比如某个时刻若培养皿中有 4 个细胞, Hanks 博士可以把它们分入 2 个试管,每试管内 2 个,然后开始实验。但如果培养皿中有 5 个细胞,博士就无法将它们均分入 2 个试管。此时,博士就只能等待一段时间,让细胞们继 续分裂,使得其个数可以均分,或是干脆改换另一种细胞培养。 为了能让实验尽早开始,Hanks 博士在选定一种细胞开始培养后,总是在得到的细胞“刚 好可以平均分入 M 个试管”时停止细胞培养并开始实验。现在博士希望知道,选择哪种细 胞培养,可以使得实验的开始时间最早。

时间关系...

未AC代码(改天调):

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n;
int m1,m2;
int s[];
inline int gcd(const int &a,const int &b){
if(b==) return a;
return gcd(b,a%b);
}
inline int numcnt(int t,int k){
int tot=;
while(t%k==){
t/=k;
tot++;
}return tot;
}
inline bool p(const int &nn){
for(int i=;i<=sqrt(nn);i++){
if(!(nn%i)) return ;
}return ;
}
int main(){
//freopen("data.in","r",stdin);
//freopen("cell.out","w",stdout);
scanf("%d",&n);
scanf("%d%d",&m1,&m2);
if(m1==){
cout<<<<endl;
return ;
}
for(int i=;i<=n;i++)
scanf("%d",&s[i]);
int tt=;
int pri[];
int numm[];
memset(numm,,sizeof(numm));
int ti=m1;
for(int i=;i<=ti;i++){
if(p(ti)){
pri[++tt]=ti;
break;
}
if(ti%i==)
pri[++tt]=i;
while(ti%i==){
ti/=i;
numm[i]++;
}
}
int minn=;
for(int i=;i<=n;i++){
if(gcd(s[i],m1)==)continue;
int maxn=;
bool ok=;
int tot=;
int sum=;
for(int j=;j<=tt;j++){
if(numcnt(s[i],pri[j])==){
ok=;
break;
}
int now=;
now=numm[pri[j]]*m2/numcnt(s[i],pri[j]);
if((numm[pri[j]]*m2)%numcnt(s[i],pri[j]))
now++;
maxn=max(maxn,now);
}
if(ok==)continue;
while(tot<maxn){
tot*=;
sum++;
}
minn=min(minn,sum+);
}
if(minn==)
printf("-1");
else
printf("%d",minn);
return ;
}

AC代码(天天%我但就是比我高的ych代码):

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<time.h>
#include<queue>
#include<stack>
using namespace std;
inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''||ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} //首先这道题显然是道数学题(要不然这数据怎么玩)
//样例1的解释启发我们这道题可以通过分解质因数做
//这个题其实条件等价于求a^x=k(m1^m2)的最小x值
//我们可以对两边进行分解质因数
//发现如果方程有解,则m1中不能包含a中没有的质因子
//但是a1的质因子可以比m1多
//那么最小的x就是找到最大的次数差值 struct prime
{
int cnt,pn[],t[];
}p,q;//一个储存题目给的条件,一个储存判断
int n,m1,m2;
inline void fenjie(int t,prime& p)//质因数分解2
{
p.cnt=;
for(int i=;i*i<=t;++i)
{
if(!(t%i))
{
p.pn[++p.cnt]=i;//记录第cnt个约数
p.t[p.cnt]=;
do
{
t/=i;
++p.t[p.cnt];//次数
}while(!(t%i));
}
} if(t>){
p.pn[++p.cnt]=t;
p.t[p.cnt]=;
}
}
int main(){
//freopen("cell.in","r",stdin);
//freopen("cell.out","w",stdout);
n=read(),m1=read(),m2=read();
if(m1==) return cout<<<<endl,;//先判断一波特殊情况
fenjie(m1,p);//把m1分解,存到p里
int ans,x;
ans=-;
for(int i=;i<=n;i++)
{
x=read();
fenjie(x,q);
int maxn=,nxt=;
//我们用nxt来存储x的下一个质因子的序号
bool flag=false;
if(q.cnt>=p.cnt)
//只有要求判断的数的质因子的个数>=题目给的条件的质因子的个数才能继续
for(int j=;j<=p.cnt;j++)//枚举m1的每一个质因子
{
while(q.pn[nxt]<p.pn[j]&&nxt<=q.cnt)++nxt;
if(nxt>q.cnt||q.pn[nxt]>p.pn[j])break;//如果没有这个质因子就跳出
int f=p.t[j]*m2/q.t[nxt];
if((p.t[j]*m2)%(q.t[nxt])) f++;
//让这两个次数相等,因为有可能不整除,所以还要判断一下,相当于向上取整
if(maxn<f)maxn=f;//求最大值
if(j==p.cnt) flag=; //标记答案
else flag=;
}
if(flag&&(ans==-||ans>maxn))ans=maxn;
}
printf("%d\n",ans);
return ;
}

考试时候写题解???EXM???

次日update

已AC代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n;
int m1,m2;
int s[];
inline int gcd(const int &a,const int &b){
if(b==) return a;
return gcd(b,a%b);
}
inline int numcnt(int t,int k){
int tot=;
while(t%k==){
t/=k;
tot++;
}return tot;
}
int main(){
//freopen("cell.in","r",stdin);
//freopen("cell.out","w",stdout);
scanf("%d",&n);
scanf("%d%d",&m1,&m2);
for(int i=;i<=n;i++)
scanf("%d",&s[i]);
int tt=;
int pri[];
int numm[];
memset(numm,,sizeof(numm));
int ti=m1;
for(int i=;i<=ti;i++){
if(ti%i==)
pri[++tt]=i;
while(ti%i==){
ti/=i;
numm[i]++;
}
}
int minn=;
for(int i=;i<=n;i++){
int gc=gcd(m1,s[i]); //~~int gc=cxk;~~
int maxn=;
bool ok=;
int tot=;
int sum=;
for(int j=;j<=tt;j++){
if(numcnt(s[i],pri[j])==){
ok=;
break;
}
int now;
now=numm[pri[j]]*m2/numcnt(s[i],pri[j]);
if(numm[pri[j]]*m2%numcnt(s[i],pri[j]))
now++;
maxn=max(maxn,int(now));
}
if(ok==)continue;
minn=min(minn,maxn);
}
if(minn==)
printf("-1");
else
printf("%d",minn);
return ;
}

思路与上面的那位大佬一致,也是考试时的思路,代码与考试src基本一致,改了两行AC了,主要就是改进了取整运算,改正了关于minn的算法,可以看出许多变量是没有必要设的,甚至很多语句都是多余的,原因在于懒得删了急于AC,反正也A了嘛...

考试总结(橙题WA)的更多相关文章

  1. 中国MOOC_零基础学Java语言_期末考试的编程题_1二进制的前导的零

    期末考试的编程题 返回   这是期末考试的编程题,在60分钟内,你可以多次提交,直到正确为止. 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止 ...

  2. 考试宝典-真题园安卓AppV2.1.0新版发布啦,全新界面,全新体验,全面适配Android 5.0&6.0系统!

    真题园移动客户端是真题园网 http://www.zhentiyuan.com 旗下的一款学习考试应用App. 1.全新适配Android5.0.6.0系统,重新优化架构网络通信模块. 2.全新清爽U ...

  3. C语言考试解答十题

    学院比较奇葩,大一下期让学的VB,这学期就要学C++了,然后在开学的前三个周没有课,就由老师讲三个周的C语言,每天9:30~11:30听课,除去放假和双休日,实际听课时间一共是12天*2小时,下午是1 ...

  4. OCP 认证考试报名费技巧题库051052053解析合格线

    本人于2017年4月22日通过参加OCP考试,第一次参加,一天之内考了三门,三门一次性通过,052 - 95% ,053 - 86% ,051 - 100% 一.关于考试考试报名费: 052:158$ ...

  5. HDU 2093 考试排名 模拟题

    解题报告: 题目描述:写一个程序给一个编程考试C++实时提交系统排名,给你的数据是题目的总数,每次错误提交罚的时间分,每位用户的姓名,然后是输入用户每题的完成情况,有一下几种情况,第一,输入只有一个正 ...

  6. oj判题WA/RE怎么办

    [转]POJ WA/RE指南   “POJ上头的题都是数学题”,也不知道是那个家伙胡诌的……但是POJ的要求就是算法通过了也不让你AC.下面本人就这560题的经验,浅谈一下WA/RE了怎么办. 以下内 ...

  7. 2019PAT春季考试第4题 7-4 Structure of a Binary Tree (30 分)

    题外话:考试的时候花了一个小时做了27分,由于Siblings这个单词不知道意思,所以剩下的3分就没去纠结了,后来发现单词是兄弟的意思,气哭~~ 这道题的麻烦之处在于如何从一个字符串中去找数字.先首先 ...

  8. [考试]NOIP2015模拟题2

    // 此博文为迁移而来,写于2015年7月22日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w72i.html 1.总 ...

  9. 复旦大学2015--2016学年第二学期(15级)高等代数II期末考试第六大题解答

    六.(本题10分)  设 $n$ 阶复方阵 $A$ 的特征多项式为 $f(\lambda)$, 复系数多项式 $g(\lambda)$ 满足 $(f(g(\lambda)),g'(\lambda))= ...

随机推荐

  1. 优雅的解决springboot Aop @Cacheable this不生效

    问题描述:在同一个类中springAop不生效,例如在同一个类中没有 @Cacheable的方法调用本类有 @Cacheable的方法,则缓存不会设置. 原因:springaop基于java prox ...

  2. MySQL 合并字段及列转行

    数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断   ...

  3. 发布TS类型文件到npm

    最近发布了@types/node-observer包到npm,这里记录下发布过程 TS类型文件的包名通常以@types开头,使用npm publish发布以@types开头的包时需要使用付费账号.   ...

  4. 【Python】itertools之product函数

    [转载]源博客 product 用于求多个可迭代对象的笛卡尔积(Cartesian Product),它跟嵌套的 for 循环等价.即: product(A, B) 和 ((x,y) for x in ...

  5. C#,二分法,BinarySearch()

    static int BinarySearch(int[] arr,int key,int low,int high) { low = 0;high = arr.Length - 1; while(l ...

  6. Linux nodejs 安装以及配置环境

    从官网中下载nodejs 打开官网 https://nodejs.org/en/download/ 复制拿到链接,下载nodejs wget https://nodejs.org/dist/v10.1 ...

  7. 在centos7 中docker info报错docker bridge-nf-call-iptables is disabled 的解决方法

    在centos7中安装好docker以后,启动成功,运行命令 docker info ,报错: [root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker info Client ...

  8. Django ajax 简单介绍

    AJAX Asynchronous Javascript And XML是 "异步Javascript和XML".即使用 Javascript 语言与服务器进行异步交互,传输的数据 ...

  9. 7、Topic

    Topics In the previous tutorial we improved our logging system. Instead of using a fanout exchange o ...

  10. RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version

    /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7 ...