HDU 4961
来源:互联网 发布:淘宝steam慈善包送大作 编辑:程序博客网 时间:2024/05/20 23:33
WA掉了。。。。。
想法和别人的相反,别人是找因子,我是找倍数。。。。其实感觉没有错啊。。。
这个是错的代码。。。。
#include <stdio.h>#define maxn 200010#define inf 1e18#define ll __int64ll vis[maxn][2];ll a[maxn];ll qian[maxn],hou[maxn];ll big;ll max(ll x,ll y){ if(x>y) return x; else return y;}void find(ll x,ll loc,ll c[2],ll d[2]){ ll tmp=big/x; ll i,b; c[0]=-1;c[1]=inf; for(i=x+x;i<=big;i+=x) { if(vis[i][0]) { b=vis[i][1]; //printf("**%d\n",i*x); if(b>c[0]&&b<loc) {c[0]=b;d[0]=i;} if(b<c[1]&&b>loc) {c[1]=b;d[1]=i;} } } return;}void init(){ ll i,j; for(i=0;i<2;i++) for(j=0;j<=maxn;j++) vis[j][i]=0;}int main(){ ll n; while(scanf("%I64d",&n)!=EOF&&n) { ll c[2],d[2]; ll sum=0; big=0; init(); ll i,j,k; for(i=1;i<=n;i++) { scanf("%I64d",&a[i]); vis[a[i]][0]=1; vis[a[i]][1]=i; big=max(big,a[i]); } for(i=1;i<=n;i++) { if(a[i]==0) {qian[i]=0;hou[i]=0;continue;} find(a[i],i,c,d); if(c[0]!=-1) qian[i]=d[0]; else qian[i]=a[i]; if(c[1]!=inf) hou[i]=d[1]; else hou[i]=a[i]; //printf("qian=%d hou=%d\n",qian[i],hou[i]); sum+=qian[i]*hou[i]; } printf("%I64d\n",sum); } return 0;}
下午的时候学长来,问了下,说是可能会出现重复的数字,然后就会出错,猛然惊醒。。。又长姿势了。。。自己想的还是太少。
然后按照题解的方法做了,1A,happy。
#include <stdio.h>#include <math.h>#include <string.h>#define maxn 100010#define ll __int64ll a[maxn],b[maxn],c[maxn];ll yinzi[maxn];int main(){ ll n; while(scanf("%I64d",&n)) { ll sum=0; if(n==0) break; ll i,j; memset(yinzi,0,sizeof(yinzi)); for(i=1;i<=n;i++) { scanf("%I64d",&a[i]); if(yinzi[a[i]]) b[i]=a[yinzi[a[i]]]; else b[i]=a[i]; for(j=1;j<=sqrt(a[i]);j++) { if(a[i]%j==0) { yinzi[j]=i; yinzi[a[i]/j]=i; } } } memset(yinzi,0,sizeof(yinzi)); for(i=n;i>0;i--) { if(yinzi[a[i]]) c[i]=a[yinzi[a[i]]]; else c[i]=a[i]; for(j=1;j<=sqrt(a[i]);j++) { if(a[i]%j==0) { yinzi[j]=i; yinzi[a[i]/j]=i; //printf("x=%I64d i=%I64d\n",a[i],j); // printf("yinzi[%I64d]=%I64d yinzi[%I64d]=%I64d \n",i,yinzi[i],a[i]/j,i); } } } // for(i=1;i<=n;i++) printf("b=%I64d c=%I64d\n",b[i],c[i]); for(i=1;i<=n;i++) sum+=c[i]*b[i]; printf("%I64d\n",sum); } return 0;}
0 0
- hdu 4961
- HDU 4961
- hdu 4961
- hdu 4961
- 2014多校训练九(HDU 4960 HDU 4961 HDU 4965 HDU 4968 HDU 4969 HDU 4970)
- HDU 4961 Boring Sum
- hdu 4961 因子
- HDU - 4961 Boring Sum
- hdu 4961 Boring Sum
- hdu 4961 Boring Sum
- hdu 4961 Boring Sum
- HDU 4961 Boring Sum
- hdu 4961 Boring Sum
- hdu 4961 数论?
- HDU 4961 Boring Sum
- hdu
- hdu
- HDU
- 简单工厂模式
- xcode 创建多个target
- 防撞扶手使用效果明显
- json相关obj序列化库及使用
- 28_sharedPreference入门.avi
- HDU 4961
- 冷轧钢带的性能标准
- 互联网的思考
- Android 动画AlphaAnimation类方法
- Android内存回收策略优先级
- Android Animation详解一
- linux下装了mysql后重置root密码的问题
- CSS中box-sizing的使用
- Eureqa Formulize从实验数据中自动筛选函数关系的symbolic regression符号回归软件