CF_div2_C_神代码跟踪体会。
来源:互联网 发布:软件操作说明书模板 编辑:程序博客网 时间:2024/06/06 10:49
这道题自己写了个很挫的代码,而且WA on test 39,不知道错在哪里,于是翻看神牛的代码,瞬间被震撼了!
以后素数问题可以这么写!
亮点1:
p[i] : i的一个因子
for ( int j=s[i]; j>1; j/=p[j] ) :这句话一定能找到s[i]的所有因子!
亮点2:
处理最大公约数问题可以“交叉”来,这样照顾到2方面
启示:1.比赛时的空间很充裕!
2.学会巧妙地定义数组,然后不要被从前的思维所束缚!
#include <cstdio>#include <cstring>#include <algorithm>#define N 100010#define S 10000010#define SZ(x) ((int)(x).size())#define FOR(it,c) for ( __typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++ )using namespace std;int p[S];void predo() { // j一定可以得到一个素因子p[j]for ( int i=2; i*i<S; i++ ) if ( !p[i] ) for ( int j=i*i; j<S; j+=i ) p[j]=i;for ( int i=2; i<S; i++ ) if ( !p[i] ) p[i]=i;}void shik( int n, int s[], int t[] ) {for ( int i=0; i<n; i++ )for ( int j=s[i]; j>1; j/=p[j] ) // 这么写很快又很短!一定能找到所有的因子 t[p[j]]++;}void meow( int n, int s[], int t[] ) {for ( int i=0; i<n; i++ ) {int x=1;for ( int j=s[i]; j>1; j/=p[j] ) { // 一定能找到所有因子!if ( t[p[j]]>0 ) t[p[j]]--;else x*=p[j];}printf("%d%c",x,i==n-1?'\n':' ');}}int n,m,a[N],b[N],x[S],y[S];int main(){predo();scanf("%d%d",&n,&m);for ( int i=0; i<n; i++ ) scanf("%d",a+i);for ( int i=0; i<m; i++ ) scanf("%d",b+i);printf("%d %d\n",n,m);shik(n,a,x);shik(m,b,y);meow(n,a,y); // 交叉meow(m,b,x);return 0;}
- CF_div2_C_神代码跟踪体会。
- 跟踪代码
- 代码跟踪
- C#代码跟踪代码
- 读代码的体会
- 写代码的体会
- 写代码一些体会
- 如何跟踪ACPI代码
- C/C++代码跟踪
- mtd子系统代码跟踪
- MFC之代码跟踪
- Android Launcher2代码跟踪
- 代码跟踪调试方法
- 代码跟踪--初学cocos2dx
- Android跟踪代码
- VPN功能代码跟踪
- 跟踪代码的方法
- 压缩跟踪代码
- 使atl开发的activex控件不弹脚本安全提示
- POJ 1141 Brackets Sequence(区间DP)
- 第11章 GUI 11 Paint 方法
- POJ1682-Clans on the Three Gorges
- Android学习 之 Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象,如图像
- CF_div2_C_神代码跟踪体会。
- UIWindow介绍
- GT_COUNT.cpp支配值数目
- POJ 1195 - Moblie phones
- windows xp“显示桌面”快捷方式不见时处理方法
- hdu 2462 数学欧拉 The Luckiest number
- MySQL索引背后的数据结构及算法原理
- [AIR Mobile] air 移动开放,usb调试,后台推送,配置文件,ios设置
- 内核数据类型