关于C++的语法
  • 板块学术版
  • 楼主Doubleen
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/10/29 13:17
  • 上次更新2023/11/5 09:36:21
查看原帖
关于C++的语法
56432
Doubleen楼主2020/10/29 13:17

这两个代码有什么区别

正确:

#include<cstdio>
typedef long long ll;
const ll Mod=1e7+5;
ll n,m,v[Mod],h[Mod],a;
void hsh(ll x){
	int now=x%Mod;
	while(h[now]!=x&&h[now]!=0){
		now++; if(now==Mod) now=1;
	}
	if(!h[now]) h[now]=x,v[now]=1;
	else v[now]++;
}
int main()
{
	scanf("%lld%lld",&n,&m);
	for(register int i=1;i<=n/100;i++){
		ll x;
		scanf("%lld",&x); a=x;
		for(register int j=1;j<=100;j++){
			hsh(a+1);
			a=(a*109+107)%m;
		}
	}
	ll ans=0;
	for(register int i=0;i<Mod;i++){
		if(h[i]){
			ans+=(v[i]+h[i]-1)/h[i]*h[i];
		}
	}
	printf("%lld\n",ans);
	return 0;
}

错误

#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
const ll Mod=1e7+5;
ll n,m;
ll v[Mod+3],h[Mod+3];
void hsh(ll x){
    ll now=x%Mod;
    while(h[now]!=x&&h[now]!=0){
        now++; if(now>=Mod) now=1;
    }
    if(!h[now]) h[now]=x,v[now]=1;
    else v[now]++;
}
int main()
{
    scanf("%lld%lld",&n,&m);
    for(register ll i=1;i<=n/100;i++){
        ll x;
        scanf("%lld",&x);
        for(register ll j=1;j<=100;j++){
            hsh(x+1);
            x=(x*109+107)%m;
        }
    }
    ll ans=0;
    for(register ll i=0;i<Mod;i++){
        if(h[i]){
            ans+=(v[i]+h[i]-1)/h[i]*h[i];
        }
    }
    printf("%lld\n",ans);
    return 0;
}
2020/10/29 13:17
加载中...