洛谷 - 一些好玩的问题
目录
P2181 对角线 - 数学
P1009 [NOIP1998 普及组] 阶乘之和 - 越界
P1217 [USACO1.5]回文质数 Prime Palindromes - 超时
P5729 【深基5.例7】工艺品制作 - 三维数组
P2181 对角线 - 数学
对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。
例如,6 边形:
输入格式
输入只有一行一个整数 n,代表边数。
输出格式
输出一行一个整数代表答案。
直接背公式:n * (n-1) * (n-2) * (n-3) / 4!
同时为了防止爆掉,但又不想写高精,
我们可以采用一种化简的技巧
于是原式可以化为:
n * (n-1) / 2 * (n-2) / 3 * (n-3) / 4
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,ans;
int main()
{scanf("%lld",&n);ans=n * (n-1) / 2 * (n-2) / 3 * (n-3) / 4;printf("%lld\n",ans);return 0;
}
P1009 [NOIP1998 普及组] 阶乘之和 - 越界
正常做法:高精度
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[101]={0},s[101]={0};
void change(int x)
{int g=0;for(int i=100;i>=0;i--){a[i]=a[i]*x+g;g=a[i]/10;a[i]=a[i]%10;}
}
void qh()
{int g=0;for(int i=100;i>=0;i--){s[i]=s[i]+a[i]+g;g=s[i]/10;s[i]=s[i]%10;}
}
void sc()
{int w;for(int i=0;i<=100;i++){if(s[i]!=0){w=i;break;}}for(int i=w;i<=100;i++)printf("%d",s[i]);
}
int main()
{scanf("%d",&n);s[100]=a[100]=1;for(int i=2;i<=n;i++){change(i);qh();}sc();return 0;
}
遇到高精度直接python走起
打表
具体思路
先用python打表,然后以字符串形式存入c++代码中
实现
python代码
f=open(r'point.txt','w') #存入文件
sum=1
i=2
last=1
n=int(input())
while i<=n:last*=isum+=lasti+=1 #主函数f.write('"') #上引号f.write(str(sum)) #具体值f.write('",') #下引号与逗号
f.close #关闭文件写入
存入cpp后代码
#include<iostream>
using namespace std;
string a[60]={"0","1","3","9","33","153","873","5913","46233","409113","4037913","43954713","522956313","6749977113","93928268313","1401602636313","22324392524313","378011820620313","6780385526348313","128425485935180313","2561327494111820313","53652269665821260313","1177652997443428940313","27029669736328405580313","647478071469567844940313","16158688114800553828940313","419450149241406189412940313","11308319599659758350180940313","316196664211373618851684940313","9157958657951075573395300940313","274410818470142134209703780940313","8497249472648064951935266660940313","271628086406341595119153278820940313","8954945705218228090637347680100940313","304187744744822368938255957323620940313","10637335711130967298604907294846820940313","382630662501032184766604355445682020940313","14146383753727377231082583937026584420940313","537169001220328488991089808037100875620940313","20935051082417771847631371547939998232420940313","836850334330315506193242641144055892504420940313","34289376947494122614363304694584807557656420940313","1439295494700374021157505910939096377494040420940313","61854558558074209658512637979453093884758552420940313","2720126133346522977702138448994068984204397080420940313","122342346998826717539665299944651784048588130840420940313","5624964506810915667389970728744906677010239883800420940313","264248206017979096310354325882356886646207872272920420940313","12678163798554051767172643373255731925167694226950680420940313","620960027832821612639424806694551108812720525606160920420940313","31035053229546199656252032972759319953190362094566672920420940313"};
int main()
{int n;cin>>n;cout<<a[n];
}
P1217 [USACO1.5]回文质数 Prime Palindromes - 超时
看起来很简单,但我赌你不可能一遍AC
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
typedef long long LL;int zs(int n)
{if(n<2) return 0;for(int i=2;i<=sqrt(n);i++)if(n%i==0) return 0;return 1;
}int hw(int n)
{int sum=0;int k=n;while(n){sum=sum*10+n%10;n/=10;}if(sum==k) return 1;else return 0;
}int main()
{int n,m;cin>>n>>m;for(int j=n;j<=m;j++){if(j==9989900) //打表找到最大质数9989899break;if(hw(j)&&zs(j)) //先判回文,超时1个点//if(zs(j)&&hw(j)) 先判断质数再判断回文,直接超时3个点printf("%d\n",j);}return 0;
}
超时总结:
1、将 cin 改为 scanf ,cout 改为 printf (当数据大于1e7时快十多倍)
2、将特殊的先判断(循环判断顺序由特殊到一般)
3、利用打表法观察数的边界,强行剪枝
4、超时绝大多数情况出在循环
P5729 【深基5.例7】工艺品制作 - 三维数组
好像三维数组比较少见...
首先由于是立方体,那么肯定要构造立方体的模型,也就是三维数组,然后总的大体积就是长宽高相乘,也就是wxh,然后看了半天题目也看不懂是怎么减去的,但根据题目的分析可得(1,1,1) (2,2,2)刚好减去了8的体积,那么就可以姑且认为这是减去的是三维排列
例如:(1,1,1),(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2),(2,2,1),(2,2,2)刚好为八个,如果这样理解的话,这题就清晰了;
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
typedef long long LL;
const int N=1e5+10;
using namespace std;
//int a[N][N][N]; 三维数组就是不能这样定义,不知道为什么
int a[21][21][21];
int w, x, h, q;
int x1, z1, x2, y2, z2,sum ;
int y1;
int main() {int y1; //只能在局部取名y1 cin >> w >> x >> h;cin >> q;for (int i = 0; i < q; i++)//循环n趟{cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;for (int i = x1; i <= x2; i++){for (int j = y1; j <= y2; j++){for (int k = z1; k <= z2; k++){a[i][j][k] = 1;}}}}for (int i = 1; i <= w; i++){for (int j = 1; j <= x; j++){for (int k = 1; k <= h; k++){if (a[i][j][k] == 0)sum++;}}}cout << sum << endl;return 0;
}
我就不理解那些题解为啥这么花里胡哨的...
离奇事件:
1、c++中不能在全局取名y1(????为什么为什么??)
2、可能是有的编译器不支持const int N=1e5+10; int a[N][N][N]; 这样的操作
(有懂的大佬快来评论)
洛谷 - 一些好玩的问题相关推荐
- 洛谷 - 一些好玩的问题 3
目录 P5731 [深基5.习6]蛇形方阵 - 输出格式 P5732 [深基5.习7]杨辉三角 - 经典数学 P1957 口算练习题 小知识1:sprintf函数的用法 P1308 [NOIP2011 ...
- 洛谷 - 一些好玩的问题 2
目录 P5730 [深基5.例10]显示屏 - 字符表问题 P2141 [NOIP2014 普及组] 珠心算测验 - 数组去重法 P1553 数字反转(升级版)- 细节 P1205 [U ...
- 洛谷· [AHOI2008]紧急集合 / 聚会
初见安~这里是传送门:洛谷P4281紧急集合/聚会 题目描述 欢乐岛上有个非常好玩的游戏,叫做"紧急集合".在岛上分散有N个等待点,有N-1条道路连接着它们,每一条道路都连接某两个 ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
- 洛谷 P1142 轰炸
洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...
- 洛谷 P1387 最大正方形
P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...
- 洛谷P2763 试题库问题
题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...
- 动态规划——洛谷_P1057传球游戏
题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...
- 洛谷P1417 烹调方案
洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...
最新文章
- SystemCenter2012SP1实践(24)【录像】创建私有云
- WPF 第一个创建的窗体会作为Application.Current.MainWindow
- camtasia studio 8.2使用技巧集锦
- 上机考试系统 commons-fileupload 上传与下载 压缩为 zip 文件 删除文件夹下所有内容...
- for循环中一个不容小觑的问题
- Powerline专用字体安装_PowerFonts字体库安装_Meslo LG字体安装
- Windows DDK要点指南
- SAP License:ERP系统会计凭证中的那些必填项
- ftp://hxtech.com
- Android之Adobe AIR本地扩展
- 爱奇艺全国高校算法大赛初赛A
- [渝粤教育] 厦门工学院 逻辑与批判性思维 参考 资料
- 5999卖999!是噱头还是颠覆
- 首次主持春晚,她因太漂亮登上热搜
- 联想电脑的计算机,联想笔记本系统按F几下|联想计算机的系统按钮是什么?
- 按键精灵在帖吧的引流代码
- 小程序源码:登录接口已修复梦想贩卖机V2 2.0.4 修复版
- TypeScript进阶 之 重难点梳理
- 解决CentOS7 Development Tools 包不存在问题
- 男人应该做的50件事(17-33)
热门文章
- jquery动态添加带有样式的HTML标签元素
- BeanUtils.populate()封装bean属性为null的四种失效原因
- Linux服务器与Windows服务器的区别。
- Cacheable、CacheEvict、Caching使用示例
- 在调试器下理解RK3588和LINUX5.10
- Kubernetes CSI(一):介绍
- Justified Jungle
- 【安全测试】数据安全性
- Hadoop第三天--linux指令
- MAC下的Sublime Text关闭自动更新提示,关闭更新检查,适用于Sublime 3和Sublime 4