0619-weekly-test-B

 ACM  模拟 󰈭 525字

题目要求我们写一个指定语法的程序,要求这个程序能够输出指定fibnacci数列中的某一项,询问至多不超过30项。

这道题目还是蛮新颖的,虽然不算很难,但是因为坑到我了…所以还是写篇简短的博客记录一番。

这道题目可行的程序很多以至于WA了之后不知道怎么改,我的算法是初始化[n, 0, 1]之后循环判断当前n是否为1,不是的话将[n, y, x]变成[n - 1, x, x + y],然后再次jump到判断语句处。主要分成三个模块:判断是否为1,对n减一,变换[y, x]成为[x, x + y]。结合操作随意构造一番即可。

坑点在于,题目费了很大的劲说了约束条件,约束了程序执行的最大次数1e3..如果我们循环的次数超过33次的话,就无法在1000行以内跑完项数最大30的情况,也是这里导致我WA到自闭QAQ…优化算法之后即可成功AC。

以后读题目一定要仔细关注条件,不然总是死在奇奇怪怪的地方…

当时以为自己程序错了还写了个解释器却发现结果符合的很好qaq

 1void fun(int x){
 2    for(int i = 0; i < x; i++) printf("c");
 3}
 4
 5const int inf = 50;
 6vector<int> vec = {
 7    4, 7, 8,
 8    8, 7, 8, 12, 5, 3, inf, 6,
 9    7, 8, 7, 8, 13, 5, 2, 12, 8, 5, 6,
10    7, 9, 11, 5, 10, 9, 5, 1,
11    8, 11, 6
12};
13
14int main(){
15//    Fastin;
16    int size = (int)vec.size();
17    for(int i = 0; i < size; i++){
18        fun(vec[i]);
19        if(i != size - 1) printf("\n");
20    }
21    return 0;
22}
嗨! 这里是 rqdmap 的个人博客, 我正关注 GNU/Linux 桌面系统, Linux 内核, 后端开发, Python, Rust 以及一切有趣的计算机技术! 希望我的内容能对你有所帮助~
如果你遇到了任何问题, 包括但不限于: 博客内容说明不清楚或错误; 样式版面混乱等问题, 请通过邮箱 rqdmap@gmail.com 联系我!
修改记录:
  • 2023-09-01 18:14:49单独划分ACM专题; 移动部分博客进入黑洞归档
  • 2023-05-29 23:05:14大幅重构了python脚本的目录结构,实现了若干操作博客内容、sqlite的助手函数;修改原本的文本数 据库(ok)为sqlite数据库,通过嵌入front-matter的page_id将源文件与网页文件相关联
  • 2023-05-08 21:44:36博客架构修改升级
  • 2022-11-16 01:27:34迁移老博客文章内容