题目链接: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程序设计新生赛(多校联赛)(线上赛)(热身赛) 题解相关推荐

  1. 武汉工程大学第三届ACM程序设计选拔赛

    武汉工程大学第三届ACM程序设计选拔赛 A题(疯狂动物城) 题目链接:https://ac.nowcoder.com/acm/contest/19161/A 题目描述 动物城中有四类动物 A,B,C, ...

  2. 武汉工程大学第一届程序设计女生赛(牛客contest 4746)解题报告 Apare_xzc

    武汉工程大学第一届程序设计女生赛解题报告 xzc 2020.3.8 比赛链接:武汉工程大学第一届程序设计女生赛 A. Multiplication (101/861) 分析: 问x平方几次后就会> ...

  3. 2021暨南大学轩辕杯ACM程序设计新生赛题解

    title : 2021暨南大学轩辕杯ACM程序设计新生赛 date : 2021-12-12 tags : ACM,练习记录 author : Linno 题目链接:https://ac.nowco ...

  4. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)...

    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...

  5. 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 ...

  6. 关于2020西门子杯工业自动化线上赛总结(初赛过控篇)

    关于2020西门子杯工业自动化线上赛总结(初赛过程控制篇) 初赛赛程回顾 PID控制器 三个基本实验 液位+温度?PID调参从入门到放弃 总结与感想 初赛赛程回顾 本来的确不想回顾这个比赛的,自己第一 ...

  7. “中能融合杯”第六届工控大赛线上赛部分题总结与复现

    前言 "中能融合杯"第六届工控大赛线上赛已经结束,题目只有杂项题(包括工控题)和逆向题.作为一名Web狗,就只能去做杂项了,杂项题挺容易的,好多都是以前的原题.关卡4的3个题发现应 ...

  8. 精英荟聚,入海捉蛟 | 2022年全国水下机器人大赛线上赛圆满举办

    2022年全国水下机器人大赛国际线上赛决赛线上答辩于本月15.16日在深圳完赛.鹏城实验室副主任石光明出席并致辞,来自北京大学.哈尔滨工程大学.西北工业大学等18所高校科研院所的26位专家学者为大赛执 ...

  9. 首届“陇剑杯”网络安全大赛线上赛圆满结束

    9月14日,集结了各行业领域3020支战队.11135名网络安全精英的首届"陇剑杯"网络安全大赛线上赛圆满结束,成功拉开将于9月25日在甘肃兰州新区举行的总决赛战幕.届时,涵盖网络 ...

最新文章

  1. 为什么软件开发方法论让你觉得糟糕?Why Software Development Methodologies Suck?
  2. python标准库time_Python3标准库:time时钟时间
  3. 全球地区资料json 含中英文 经纬度_含乳饮料行业发展趋势及市场化程度分析(附报告目录)...
  4. Zepto 使用中的一些注意点
  5. zblog php mip,zblog网站改造百度MIP的教程仅针对zblog轻奢主题
  6. 4种Golang并发操作中常见的死锁情形
  7. 2021-09-18牛客SQL32,SQL33,SQL35,SQL36,SQL37,SQL38,SQL40
  8. src与href区别
  9. MAC地址不能随便配
  10. 网络安全基础——用户与组管理
  11. wxParse无法解析strong标签
  12. 中国通信业:那些年,我们给用户挖的坑
  13. 3dmax电脑配置要求(3dmax需要什么样的笔记本配置?)
  14. 主力吸筹猛攻指标源码_成功率90%以上【主力吸筹+买点提示+使用方法】通达信指标公式源码...
  15. TeamViewer远程连接控制软件
  16. 赶紧用微信查询一下你的身份证,是否有人盗用你信息!
  17. 一个经济学果粉对国内iOS游戏厂商的5点斥责和5个建议
  18. 汇编总结:无符号除法,有符号除法,取余,无符号乘法,有符号乘法指令
  19. 动漫主题的聊天室(html+css+js)(聊天室下篇)
  20. 遗传算法求解TSP旅行商问题

热门文章

  1. 使用AndEngine引擎报AndEngineRuntimeException: Inherently incompatible device detected异常
  2. 使用阿里统一的code style规范你的代码格式
  3. Genymotion 安装后出现的错误及解决方法
  4. 【Linux系统与网络编程】16:Socket文件传输2
  5. curl命令行发送POST/GET请求
  6. (一)Linux源码分析-硬件开机与引导
  7. 阿里国际站的<meta name=“p:domain_verify“ content=“a963ddcfade0c77aae3e33cd28f57243“/> 来源
  8. 泊松分布如何用计算机计算,如何利用泊松分布计算概率
  9. 安科瑞开口式剩余电流互感器在改造项目中的应用(卓宋兰)
  10. layui 请求后台 josn数据