武汉工程大学第三届ACM程序设计新生赛(多校联赛)(线上赛)(热身赛) 题解
题目链接:https://ac.nowcoder.com/acm/contest/9162#question
邀请码:acmwitedu2020
A. 最短逃生距离
当输入和输出的数据总数超过1000个时,建议不直接用C++的输入输出以免超时。
各种写法
# include <stdio.h>
# include <math.h>int main() {int n, m;scanf("%d%d", &n, &m);while (m--) {int x, y;scanf("%d%d", &x, &y);printf("%d\n", abs(x - y));}return 0;
}
第二种:如果不懂原理慎用
# include <iostream>
# include <cmath>int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int n, m;std::cin >> n >> m;while (m--) {int x, y;std::cin >> x >> y;std::cout << abs(x - y) << "\n";}return 0;
}
第三种:手写输入输出
# include <iostream>
# include <cstdio>
# include <cmath>template <typename T>
void read(T &val) { T x = 0; int bz = 1; char c; for (c = getchar(); (c<'0' || c>'9') && c != '-'; c = getchar()) ; if (c == '-') { bz = -1; c = getchar(); }for (; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - 48; val = x * bz;
}template <typename T>
void put(T x){ static char ss[20]; int bas; if(x < 0) { putchar('-'); x = -x; } if(x == (T)(0)) { putchar('0'); return; } bas = 0; for(;x;x/=10) ss[bas++] = x % 10 + '0'; for(;bas--;) putchar(ss[bas]);
} int main() {int n, m;read(n);read(m);while (m--) {int x, y;read(x);read(y);put(abs(x - y));puts("");}return 0;
}
第四种:直接读取数组(如果不懂原理慎用)
# include <iostream>
# include <cstdio>
# include <cmath>const int BUFSIZE = 20 << 20; //40M
char Buf[BUFSIZE + 1], *buf = Buf;template<class T>
void read(T &a) {int sgn = 1;for(a=0; *buf<'0'||*buf>'9'; buf++) if(*buf=='-') sgn = -1;while(*buf>='0'&&*buf<='9') {a=a*10+(*buf-'0');buf++;}a *= sgn;
}void put(int x) {static char s[20];int bas;if(x < 0) {putchar('-');x = -x;}if(x == 0) {putchar('0');return;}bas = 0;for(; x; x/=10)s[bas++] = x%10+'0';for(; bas--;)putchar(s[bas]);
}int main() {fread(Buf, 1, BUFSIZE, stdin);int n, m;read(n);read(m);while (m--) {int x, y;read(x);read(y);put(abs(x - y));printf("\n");}return 0;
}
Java写的时候要IO优化
import java.util.*;
import java.io.*;public class Main {public static void solve() {int T = nextInt();T = nextInt();while (T-- > 0) {long a = nextLong();long b = nextLong();out.println(Math.abs(a - b));}} public static void main(String[] args) {reader = new BufferedReader(new InputStreamReader(System.in));tokenizer = null;out = new PrintWriter(System.out);solve();out.close();}static BufferedReader reader;static StringTokenizer tokenizer;static PrintWriter out;static int nextInt(){return Integer.parseInt(next());}static long nextLong(){return Long.parseLong(next());}static double nextDouble(){return Double.parseDouble(next());}static String next(){while (tokenizer == null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(reader.readLine());} catch (IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}
}
Python没有IO优化的方式,因此输入数据多的时候基本不考虑Python。事实上,打ACM基本上都是用的C++,Java和Python写算法题很容易超时。个人观点,不一定正确
B. spj
这题没有啥好说的,举三个例子,还有其他的写法,随便选一种 (出题人写special judge时忘记验证换行,不换行也放过了。这题不是我出的,甩锅。。。验题人没有验出问题来应该由验题人背锅?emmmm)
# include <cstdio>int main() {printf("1\n\kcxz");return 0;
}
# include <cstdio>int main() {printf("2\n\小少爷\n宇少");return 0;
}
# include <cstdio>int main() {printf("2\n宇少\n小少爷");return 0;
}
C. 突然想到一个算法
看见水群里有人斗图时发了这张图片,所以就拿这张图片当热身题。
方法一: a b ∗ c = ( a b ) c a^{b*c}={(a^b)}^c ab∗c=(ab)c,每一步都快速幂即可。复杂度 O ( l o g ( n ! ) ) ≈ O ( n l o g ( n ) ) O(log(n!))≈O(nlog(n)) O(log(n!))≈O(nlog(n)) (斯特林公式)
# include <stdio.h>const int mod = 1e9 + 7;int pow(int x, int p) {int ans = 1 % mod;while (p) {if (p & 1) {ans = 1ll * ans * x % mod;}x = 1ll * x * x % mod;p >>= 1;}return ans;
}void solve() {int n;scanf("%d", &n);int ans = n;for (int i = 2; i <= n; i++) {ans = pow(ans, i);}printf("%d\n", ans);
}int main() {int T;scanf("%d", &T);while (T--) {solve();}return 0;
}
方法二:欧拉函数
p p p为质数,所以 n n n和 p p p互质,让阶乘模质数的欧拉函数,再快速幂。复杂度 O ( n ) O(n) O(n)
# include <stdio.h>const int mod = 1e9 + 7;
int phi;int qpow(int x, int p) {int ans = 1 % mod;while (p) {if (p & 1) {ans = 1ll * ans * x % mod;}x = 1ll * x * x % mod;p >>= 1;}return ans;
}int fphi(int n) {int ans = n;for (int i = 2; i <= n / i; i++) {if (n % i == 0) {ans = ans / i * (i - 1);while (n % i == 0) {n /= i;}}}if (n > 1) {ans = ans / n * (n - 1);}return ans;
}void solve() {int n;scanf("%d", &n);int ans = 1;for (int i = 2; i <= n; i++) {ans = 1ll * ans * i % phi;}printf("%d\n", qpow(n, ans));
}int main() {int T;scanf("%d", &T);phi = fphi(mod);while (T--) {solve();}return 0;
}
D. 兀兀的请求
c o s ( π ) = − 1 cos(\pi)=-1 cos(π)=−1, a r c c c o s ( − 1 ) = π arcccos(-1)=\pi arcccos(−1)=π。C语言的库函数里面 a r c c o s ( ) arccos() arccos() 写作 a c o s ( ) acos() acos()。部分编译器 a c o s ( − 1 ) acos(-1) acos(−1)无法通过,需要写成 a c o s ( − 1.0 ) acos(-1.0) acos(−1.0)
# include <stdio.h>
# include <math.h>typedef long long ll;int main() {double ans = acos(-1.0);ans = ans * 100;for (int i = 3; i <= 14; i++) {ans = ans * 10;ll t = ans;printf("%lld", t % 10);}return 0;
}
用参考公式算到第14位极有可能会出现问题
武汉工程大学第三届ACM程序设计新生赛(多校联赛)(线上赛)(热身赛) 题解相关推荐
- 武汉工程大学第三届ACM程序设计选拔赛
武汉工程大学第三届ACM程序设计选拔赛 A题(疯狂动物城) 题目链接:https://ac.nowcoder.com/acm/contest/19161/A 题目描述 动物城中有四类动物 A,B,C, ...
- 武汉工程大学第一届程序设计女生赛(牛客contest 4746)解题报告 Apare_xzc
武汉工程大学第一届程序设计女生赛解题报告 xzc 2020.3.8 比赛链接:武汉工程大学第一届程序设计女生赛 A. Multiplication (101/861) 分析: 问x平方几次后就会> ...
- 2021暨南大学轩辕杯ACM程序设计新生赛题解
title : 2021暨南大学轩辕杯ACM程序设计新生赛 date : 2021-12-12 tags : ACM,练习记录 author : Linno 题目链接:https://ac.nowco ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)...
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- Nise-Anti-AK Problem(2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 L题)
题目链接 Description: Peppa has been learning math recently, he is trapped by a easy problem. He is give ...
- 关于2020西门子杯工业自动化线上赛总结(初赛过控篇)
关于2020西门子杯工业自动化线上赛总结(初赛过程控制篇) 初赛赛程回顾 PID控制器 三个基本实验 液位+温度?PID调参从入门到放弃 总结与感想 初赛赛程回顾 本来的确不想回顾这个比赛的,自己第一 ...
- “中能融合杯”第六届工控大赛线上赛部分题总结与复现
前言 "中能融合杯"第六届工控大赛线上赛已经结束,题目只有杂项题(包括工控题)和逆向题.作为一名Web狗,就只能去做杂项了,杂项题挺容易的,好多都是以前的原题.关卡4的3个题发现应 ...
- 精英荟聚,入海捉蛟 | 2022年全国水下机器人大赛线上赛圆满举办
2022年全国水下机器人大赛国际线上赛决赛线上答辩于本月15.16日在深圳完赛.鹏城实验室副主任石光明出席并致辞,来自北京大学.哈尔滨工程大学.西北工业大学等18所高校科研院所的26位专家学者为大赛执 ...
- 首届“陇剑杯”网络安全大赛线上赛圆满结束
9月14日,集结了各行业领域3020支战队.11135名网络安全精英的首届"陇剑杯"网络安全大赛线上赛圆满结束,成功拉开将于9月25日在甘肃兰州新区举行的总决赛战幕.届时,涵盖网络 ...
最新文章
- 为什么软件开发方法论让你觉得糟糕?Why Software Development Methodologies Suck?
- python标准库time_Python3标准库:time时钟时间
- 全球地区资料json 含中英文 经纬度_含乳饮料行业发展趋势及市场化程度分析(附报告目录)...
- Zepto 使用中的一些注意点
- zblog php mip,zblog网站改造百度MIP的教程仅针对zblog轻奢主题
- 4种Golang并发操作中常见的死锁情形
- 2021-09-18牛客SQL32,SQL33,SQL35,SQL36,SQL37,SQL38,SQL40
- src与href区别
- MAC地址不能随便配
- 网络安全基础——用户与组管理
- wxParse无法解析strong标签
- 中国通信业:那些年,我们给用户挖的坑
- 3dmax电脑配置要求(3dmax需要什么样的笔记本配置?)
- 主力吸筹猛攻指标源码_成功率90%以上【主力吸筹+买点提示+使用方法】通达信指标公式源码...
- TeamViewer远程连接控制软件
- 赶紧用微信查询一下你的身份证,是否有人盗用你信息!
- 一个经济学果粉对国内iOS游戏厂商的5点斥责和5个建议
- 汇编总结:无符号除法,有符号除法,取余,无符号乘法,有符号乘法指令
- 动漫主题的聊天室(html+css+js)(聊天室下篇)
- 遗传算法求解TSP旅行商问题
热门文章
- 使用AndEngine引擎报AndEngineRuntimeException: Inherently incompatible device detected异常
- 使用阿里统一的code style规范你的代码格式
- Genymotion 安装后出现的错误及解决方法
- 【Linux系统与网络编程】16:Socket文件传输2
- curl命令行发送POST/GET请求
- (一)Linux源码分析-硬件开机与引导
- 阿里国际站的<meta name=“p:domain_verify“ content=“a963ddcfade0c77aae3e33cd28f57243“/> 来源
- 泊松分布如何用计算机计算,如何利用泊松分布计算概率
- 安科瑞开口式剩余电流互感器在改造项目中的应用(卓宋兰)
- layui 请求后台 josn数据