江西财经大学第一届程序设计竞赛
链接:https://www.nowcoder.com/acm/contest/115/A
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
怎么可能嘛!当我是傻子吗!#?%!“”@……
于是我就去玩了,然后我果然成功证明,我是正确的,这破游戏,真的很无聊.
0 给出两个100以内的正整数做加法
1 给出一个字符串问有多少个字符(字符串长度不超过100000)
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每组样例先输入一个整数N(0或者1)
若N为0,则输入两个整数a,b(0<=a,b<=100)
若N为1,则输入一个字符串s
输出描述:
输出T行
每行输出一个样例对应的结果
输入
2 0 1 1 1 aa
输出
2 2
a+b签到
#include <bits/stdc++.h> using namespace std; int main() { int T; cin>>T; while(T--) { int op; cin>>op; if(op==0) { int a,b; cin>>a>>b; cout<<a+b<<"\n"; } else { string s; cin>>s; cout<<s.size()<<"\n"; } } return 0; }
链接:https://www.nowcoder.com/acm/contest/115/B
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
问:从出生那一天开始起,到今天2018-04-21为止(包括出生日期和今天),有多少天,年月日都不包含数字4?
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每个样例一行,包含一个字符串“yyyy-mm-dd”(1990<=yyyy<=2018)
题目保证测试数据的正确性
输出描述:
输出题意要求的天数
输入
1 1999-09-09
输出
5020
日期统计,把它搞到2018-4-21就好啦
#include<bits/stdc++.h> using namespace std; int md[]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; int leap(int y) { return y%4==0&&y%100!=0||y%400==0; } int main() { int T; scanf("%d",&T); while(T--) { int y,m,d,cnt=0; scanf("%d-%d-%d",&y,&m,&d); if (m!=4&&d%10!=4&&y%10!=4)cnt++; if (leap(y))md[2]=29; while(y!=2018||m!=4||d!=21) { d++; if(d>md[m])d=1,m++; if(m>12) { m=1; y++; if(leap(y))md[2]=29; else md[2]=28; } if(m!=4&&d%10!=4&&y%10!=4)cnt++; } printf("%d\n",cnt); } }
链接:https://www.nowcoder.com/acm/contest/115/C
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每个样例一行,包括三个浮点数 L V1 V2(0<L,V1,V2<=10000)
输出描述:
输出T行
每个测试用例输出一行对应的结果
L1 L2(一个空格隔开,结果保留6位小数)
输入
1 100 1000 10
输出
0.049000 1.000000
物理题,求出时间t
#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { double l,v1,v2,t; cin>>l>>v1>>v2; t=l/v1; printf("%.6f %.6f\n",4.9*t*t,v2*t); } }
链接:https://www.nowcoder.com/acm/contest/115/D
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
有这么一天双休日的中午。
我刚把我衣服扔进了洗衣机,然后拿了个小板凳坐在旁边发呆。
然后突然想到这么无聊干脆玩会阴阳师好了,于是从斗篷帽子里掏出我的手机登录了阴阳师。
看着更新公告里写着的新SSR式神一目连感叹了一下:我要是能有个一目连该多好啊
看了一眼我家帅气的扛把子咕咕,正准备肝困难的时候发现庭院里那一串灯笼里的调查问卷有蝴蝶在绕,于是点进去填了一波在最结尾写上了我当时的愿望:我想要一目连。
然后奖励了一个符,顺手就抽了。本来以为又是R卡,没想到手机震动了一下。
握草!!!一目连!!!!
当时我就激动的站了起来使劲看了一眼然后仰天大笑以及截图装逼。
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每个样例一行,包含三个连续的大写字母(A - S)
输出描述:
每个样例输出一行
升级到SSR所需的次数
输入
3 SSR SRR AAA
输出
0 19 6857
备注:
SRR升级到SSR的过程:
SRR -> SRS -> SSA ->SSB -> SSC -> ……->SSR 共19次
直接按照进制算啊
#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { string s; cin>>s; cout<<('S'-s[0])*19*19+('S'-s[1])*19+('R'-s[2])<<"\n"; } }
链接:https://www.nowcoder.com/acm/contest/115/E
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
根据用户的需求,有以下几个功能,需要你来实现:
(1)recv:收到一条好友消息,对于手动置顶好友的消息,将在“手动置顶好友列表”里置顶;对于其他好友的消息,将在“手动置顶好友列表”之下的消息列表里置顶,同时都需要显示该好友的消息总数。
(2)view:查看好友消息,将使该好友消息数变为0。
(3)up:手动置顶好友。
(4)down:取消手动置顶。
(5)delete:删除好友消息,这个操作将使该好友从消息列表中删除,同时取消对该好友的手动置顶(如果存在的话)。
假设初始消息列表为空,经过了一系列好友消息的操作之后,最终的消息列表将是怎么样的呢?
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例。
每组样例
第一行输入一个整数M,表示操作数(1≤M≤1000000);
接下来M行,
每行输入一个操作,由一个操作类型和一个好友id构成,之间以空格分开,操作类型如上面5个英文单词表示,
例如:“recv 123456”表示接收到id为123456的好友的一条消息,“delete 123456”表示在消息列表中删除 id 为123456的好友的消息记录。
为了简化问题,一开始消息列表为空并假设好友名字id由六位数字“唯一”标识(000000≤id≤999999),
题目保证输入数据的一致性。
输出描述:
每组样例,
输出最后的消息列表,自顶向下,每行输出一个:“好友id 消息数”。
每组样例后空一行。
输入
1 13 recv 000001 recv 000002 up 000002 view 000001 recv 000002 recv 000004 up 000004 up 000001 recv 000004 recv 000003 view 000001 view 000004 down 000002
输出
000004 0 000001 0 000003 1 000002 2
模拟一下,这个没什么好说的,但是贡献wa
#include<bits/stdc++.h> using namespace std; const int N=1e6+5; struct T { int is,tt,id,mes; }a[N]; int cmp(T a,T b) { return a.tt>b.tt&&a.is==b.is||a.is>b.is; } int main() { int t; cin>>t; while(t--) { memset(a,0,sizeof a); int m; cin>>m; int tot=0; while(m--) { string s; int id; cin>>s>>id; a[id].id=id; if(s[0]=='r') a[id].mes++,a[id].tt=++tot; else if(s[0]=='v') a[id].mes=0; else if(s[0]=='u') a[id].is=1; else if(s[0]=='d') a[id].is=0; if(s[2]=='l') a[id].mes=0,a[id].is=0,a[id].tt=0; } sort(a,a+N,cmp); for(int i=0; i<N; i++) if(a[i].tt)printf("%06d %d\n",a[i].id,a[i].mes); printf("\n"); } return 0; }
链接:https://www.nowcoder.com/acm/contest/115/F
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
告诉你Y的值,你能找出方程在0~100之间的解吗?
输入描述:
第一行输入一个正整数T(表示样例个数)
接下来T组样例
每组样例一行,输入一个实数Y
输出描述:
一行输出一个样例对应的结果,
输出方程在0~100之间的解,保留小数点后4位小数;如果不存在,输出 -1
输入
2 1 20180421
输出
-1 9.9993
具有单调性,二分就行了。评测机快的话也是可以枚举答案的,遇到骚操作的话就去模拟退火随机化算法找答案
这种小数的你根据精度二分相应次数就行了
#include <bits/stdc++.h> using namespace std; int main() { int T; cin>>T; while(T--) { double y,l=0,r=100; cin>>y; for(int i=0; i<1000; i++) { double mi=(l+r)/2; double t=2018*mi*mi*mi*mi+21*mi+5*mi*mi*mi+5*mi*mi+14; if(t>y) r=mi; else l=mi; } if(y<14||y>2018.*100*100*100*100+21.*100+5.*100*100*100+5.*100*100+14)cout<<"-1\n"; else printf("%.4f\n",l); } return 0; }
链接:https://www.nowcoder.com/acm/contest/115/G
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每组样例第一行输入一个整数N(表示有几项活动)
接下来N行,每行输入s,e,h,p 4个整数,分别代表一个活动的开始时间、结束时间、Happy值以及绩点数
0<=s<e<=24,1<=h,p<=100,1<=T,N<=20
输出描述:
输出T行
一行输出一个样例对应的结果
小Q在一天内所能获得的最大 Happy值 与 绩点数
输入
1 4 1 3 1 1 2 5 2 1 3 7 2 1 5 8 1 2
输出
3 3
说明
有两种方案
1)选择 第1、3两个活动,可以获得 Happy值 3 和 绩点数 2;
2)选择 第2、4两个活动,可以获得 Happy值 3 和 绩点数 3.
其实就是一个01背包的
#include<bits/stdc++.h> using namespace std; int dp[25],num[25]; struct T { int s,e,h,p; } a[105]; int cmp(T a,T b) { return a.s<b.s; } int main() { int t; cin>>t; while(t--) { memset(dp,0,sizeof dp),memset(num,0,sizeof num); int n; cin>>n; for(int i=0; i<n; i++) cin>>a[i].s>>a[i].e>>a[i].h>>a[i].p; sort(a,a+n,cmp); for(int i=0; i<n; i++) for(int j=a[i].e; j<=24; j++) if(dp[j]<dp[a[i].s]+a[i].h) dp[j]=dp[a[i].s]+a[i].h,num[j]=num[a[i].s]+a[i].p; else if(dp[j]==dp[a[i].s]+a[i].h) num[j]=max(num[j],num[a[i].s]+a[i].p); cout<<dp[24]<<" "<<num[24]<<"\n"; } return 0; }
链接:https://www.nowcoder.com/acm/contest/115/H
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每组样例一行,输入一个整数N(0<=N<=1000000000)
输出描述:
输出T行
每一行输出N的阶乘 N!(由于这个数比较大,所以只要输出其对1000000007取膜的结果即可)
输入
2 0 1000000000
输出
1 698611116
现场肯定很惨的,因为应该是想不到分段打表的,1e7那么就有100个元素,复杂度就是1e7*T
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll MD=1e9+7; ll a[110]= {1,682498929,491101308,76479948,723816384,67347853,27368307, 625544428,199888908,888050723,927880474,281863274,661224977,623534362, 970055531,261384175,195888993,66404266,547665832,109838563,933245637, 724691727,368925948,268838846,136026497,112390913,135498044,217544623, 419363534,500780548,668123525,128487469,30977140,522049725,309058615, 386027524,189239124,148528617,940567523,917084264,429277690,996164327, 358655417,568392357,780072518,462639908,275105629,909210595,99199382, 703397904,733333339,97830135,608823837,256141983,141827977,696628828, 637939935,811575797,848924691,131772368,724464507,272814771,326159309, 456152084,903466878,92255682,769795511,373745190,606241871,825871994, 957939114,435887178,852304035,663307737,375297772,217598709,624148346, 671734977,624500515,748510389,203191898,423951674,629786193,672850561, 814362881,823845496,116667533,256473217,627655552,245795606,586445753, 172114298,193781724,778983779,83868974,315103615,965785236,492741665, 377329025,847549272,698611116 }; int main() { ll T,n; cin>>T; while(T--) { cin>>n; if(!n)cout<<"1\n"; else { ll now=n/10000000; ll ans=a[now]; for(ll i=now*10000000+1; i<=n; i++) ans=ans*i%MD; cout<<ans%MD<<"\n"; } } return 0; }
链接:https://www.nowcoder.com/acm/contest/115/I
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每组样例一行,输入两个正整数a,b(0<a,b<=1e9)
输出描述:
输出T行
一行输出一个样例对应的结果
若结果可信,输出 Yes
否则,输出 No
输入
6 2 4 75 45 8 8 16 16 247 994 1000000000 1000000
输出
Yes Yes Yes No No Yes
备注:
每回合的K可能不同
CF原题,但是不是能吧,不应该是必须的
所以他们的成绩就是k^3了
#include <bits/stdc++.h> using namespace std; typedef long long LL; int main() { int n; scanf("%d",&n); while(n--) { int a,b; scanf("%d%d",&a,&b); int x=(int)(pow(a*1LL*b,1.0/3)+1e-8); if(x*1LL*x*x==a*1LL*b&&a%x==0&&b%x==0) printf("Yes\n"); else printf("No\n"); } return 0; }
本文来自博客园,作者:暴力都不会的蒟蒻,转载请注明原文链接:https://www.cnblogs.com/BobHuang/p/8930336.html