CE求调!!!
查看原帖
CE求调!!!
691641
Grow_楼主2024/3/19 14:59

RT

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define int long long
using namespace std;
inline int read(){
    register char c = getchar();
	register int f = 1,x = 0;
    while(c<'0'||c>'9'){
    	if(c=='-')f = -1;
		c = getchar();
	}
    while(c>='0'&&c<='9')x = (x<<3)+(x<<1)+c-'0',c = getchar();
    return x*f;
}
inline void write(register int x){
    register int cnt = 20,st[25];
	while(x){
		st[cnt--] = char(x%10+'0');
		x/=10;
	}
	while(cnt<20)putchar(st[++cnt]);
	putchar('\n');
	return;
}
int n,m,a[100005],op,x,y,z,i,ans;
int mod(int ax,int bx){
	int p = ax-(int)((__int128)ax*(((__int128)1<<64))/bx>>64)*bx;
	if(p>=bx)p-=bx;
	return p;
}
signed main(){
    cin >> n >> m;
    for(int i = 1;i<=n;i++)a[i] = read();
    while(m--){
    	op = read();
    	x = read();
    	y = read();
    	if(op==1){
    		ans = 0;
    		for(i = x;i+6<=y;i+=7){
    			ans+=a[i];
    			ans+=a[i+1];
    			ans+=a[i+2];
    			ans+=a[i+3];
    			ans+=a[i+4];
    			ans+=a[i+5];
    			ans+=a[i+6];
			}
			while(i<=y)ans+=a[i++];
			write(ans);
		}
		else if(op==2){
			z = read();
			for(i = x;i+6<=y;i+=7){
    			a[i] = mod(a[i],z);
    			a[i+1] = mod(a[i+1],z);
    			a[i+2] = mod(a[i+2],z);
    			a[i+3] = mod(a[i+3],z);
    			a[i+4] = mod(a[i+4],z);
    			a[i+5] = mod(a[i+5],z);
    			a[i+6] = mod(a[i+6],z);
			}
			while(i<=y)a[i++]%=z;
		}
		else a[x] = y;
	}
    return 0;
}
2024/3/19 14:59
加载中...