$T1$比较简单,虽说正解是$O(n)$的但是没卡$O(nlogn)$的。那就比较简单了。
$T2$写的正解,数组开小+被卡常。也没什么好说的。
然后$T3$又是一个可爱的提交答案题。然而主要是$T1/2$调太久了,所以剩下思考它的事件也不多了。
其实不是很可想。得亏没有把太多时间砸在上面。
而且貌似$spj$写挂了的样子,评分参数没什么用。
(这么毒瘤难写的题再卡常谁还会去做啊!!!)
改题也就没啥好说的。中午花了点时间卡常把$T2$卡常。
然后剩下下午加晚上的时间砸在$T3$上刚好做出来。
T1:奶酪
大意:树。求断开每条边后,两个联通块分别的直径。$n le 2 imes 10^6$
做法不少。首先可以直接预处理$dfs$序前后缀的直径端点及长度,然后每次查询的就是两端区间合并,时间复杂度$O(nlogn)$
也可以直接树形$dp$纪录前三大值就可以了。时间复杂度$O(n)$
然而其实两种写法的代码都挺恶心。
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define S 8888888 4 #define ll long long 5 #define mod 2333333333333333 6 int n,fir[S],l[S],to[S],v[S],dfn[S],ec,tim,sz[S],f[S],hson[S],top[S],prea[S],preb[S],sufa[S],sufb[S],idfn[S],dfr[S],suba[S],subb[S]; 7 ll dep[S],ans,pred[S],sufd[S],subd[S]; 8 void link(int a,int b,int w){l[++ec]=fir[a];fir[a]=ec;to[ec]=b;v[ec]=w;} 9 void con(int a,int b,int w){link(a,b,w);link(b,a,w);} 10 int read(){ 11 register int p=0;register char ch=getchar(); 12 while(!isdigit(ch))ch=getchar(); 13 while(isdigit(ch))p=p*10+ch-48,ch=getchar(); 14 return p; 15 } 16 void dfs(int p,int fa){ 17 f[p]=fa;sz[p]=1; 18 for(int i=fir[p];i;i=l[i])if(to[i]!=fa){ 19 dep[to[i]]=dep[p]+v[i];dfs(to[i],p);sz[p]+=sz[to[i]]; 20 if(sz[to[i]]>sz[hson[p]])hson[p]=to[i]; 21 } 22 } 23 void DFS(int p,int tp){ 24 dfn[p]=++tim;idfn[tim]=p;top[p]=tp; 25 if(hson[p])DFS(hson[p],tp); 26 for(int i=fir[p];i;i=l[i])if(!dfn[to[i]])DFS(to[i],to[i]); 27 dfr[p]=tim; 28 } 29 int lca(int a,int b){ 30 while(top[a]!=top[b])if(dep[top[a]]>dep[top[b]])a=f[top[a]];else b=f[top[b]]; 31 return dep[a]>dep[b]?b:a; 32 } 33 ll dt(int a,int b){return dep[a]+dep[b]-2*dep[lca(a,b)];} 34 ll merge(int p,int s){ 35 if(s==n+1)return pred[p]; 36 return max(max(max(max(max(pred[p],sufd[s]),dt(prea[p],sufa[s])),dt(preb[p],sufa[s])),dt(preb[p],sufa[s])),dt(preb[p],sufb[s])); 37 } 38 void Dfs(int p,int fa){ 39 suba[p]=subb[p]=p; 40 for(int i=fir[p],y;y=to[i];i=l[i])if(y!=fa){ 41 ll x=merge(dfn[y]-1,dfr[y]+1);Dfs(y,p); 42 ans=(ans+23333*max(x,subd[y])+2333*min(x,subd[y]))%mod; 43 ll aa=dt(suba[p],suba[y]),ab=dt(suba[p],subb[y]),ba=dt(subb[p],suba[y]),bb=dt(subb[p],subb[y]); 44 subd[p]=max(max(max(max(max(aa,ab),ba),bb),subd[p]),subd[y]); 45 if(subd[p]==subd[y])suba[p]=suba[y],subb[p]=subb[y]; 46 else if(subd[p]==aa)suba[p]=suba[p],subb[p]=suba[y]; 47 else if(subd[p]==ab)suba[p]=suba[p],subb[p]=subb[y]; 48 else if(subd[p]==ba)suba[p]=subb[p],subb[p]=suba[y]; 49 else if(subd[p]==bb)suba[p]=subb[p],subb[p]=subb[y]; 50 } 51 } 52 int main(){ 53 n=read(); 54 for(int i=1,a,b,w;i<n;++i)ans=(ans+2+23*i+233ll*i*i)%mod,a=read(),b=read(),w=read(),con(a,b,w); 55 dfs(1,0);DFS(1,1); 56 prea[1]=preb[1]=idfn[1]; 57 for(int i=2;i<=n;++i){ 58 ll p1=dt(prea[i-1],idfn[i]),p2=dt(preb[i-1],idfn[i]); 59 if(pred[i-1]>=p1&&pred[i-1]>=p2)pred[i]=pred[i-1],prea[i]=prea[i-1],preb[i]=preb[i-1]; 60 else if(p1>=p2)pred[i]=p1,prea[i]=prea[i-1],preb[i]=idfn[i]; 61 else pred[i]=p2,prea[i]=idfn[i],preb[i]=preb[i-1]; 62 } 63 sufa[n]=sufb[n]=idfn[n]; 64 for(int i=n-1;i;--i){ 65 ll p1=dt(sufa[i+1],idfn[i]),p2=dt(sufb[i+1],idfn[i]); 66 if(sufd[i+1]>=p1&&sufd[i+1]>=p2)sufd[i]=sufd[i+1],sufa[i]=sufa[i+1],sufb[i]=sufb[i+1]; 67 else if(p1>=p2)sufd[i]=p1,sufa[i]=sufa[i+1],sufb[i]=idfn[i]; 68 else sufd[i]=p2,sufa[i]=idfn[i],sufb[i]=sufb[i+1]; 69 } 70 Dfs(1,0); 71 printf("%lld ",ans); 72 }
T2:走
大意:有向图,边上有字符,每个点至少一条出边。从$1$出发,若走出的字符串$S$满足$A$是$S$子串或$B$是$S$子序列则直接停止。求期望步数。
$n le 20,|A| le 10,|B| le 50$
最暴力的做法是对$dp[i][j][k]$表示在$i$节点,与$A$匹配$j$位与$B$匹配$k$位,期望再走的步数,高斯消元。
可以发现$B$这个子序列的限制的值是单调的,所以可以逐层转移。
所以时间复杂度是$O((n|A|)^3 |B|)$。使劲卡常就是了。
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mod 998244353 4 int n,m,fir[221],v[266666],l[266666],to[266666],dp[222][211][255],la,lb,nxt[211][226],pc,A[2666][2666],o[222][211],deg[222]; 5 char a[211],b[255],s[25]; 6 int qp(int b,int t,int a=1){for(;t;t>>=1,b=1ll*b*b%mod)if(t&1)a=1ll*a*b%mod;return a;} 7 int mo(int x){return x>=mod?x-mod:x;} 8 void Gauss(){ 9 for(int i=1;i<pc;++i){ 10 for(int iv=qp(A[i][i],mod-2),j=pc;j>=i;--j)A[i][j]=1ll*A[i][j]*iv%mod; 11 for(int j=i+1;j<pc;++j)if(A[j][i])for(int k=pc;k>=i;--k)A[j][k]=mo(A[j][k]-1ll*A[j][i]*A[i][k]%mod+mod); 12 } 13 for(int i=pc-1;i;--i)for(int j=i-1;j;--j)A[j][pc]=mo(A[j][pc]-1ll*A[j][i]*A[i][pc]%mod+mod); 14 } 15 int main(){ 16 scanf("%d%d",&n,&m); 17 for(int i=1,x,y;i<=m;++i){ 18 scanf("%d%d%s",&x,&y,s);deg[x]++; 19 l[i]=fir[x];fir[x]=i;to[i]=y;v[i]=s[0]-'a'; 20 } 21 scanf("%s%s",a+1,b+1); 22 la=strlen(a+1);lb=strlen(b+1); 23 nxt[0][a[1]-'a']=1; 24 for(int i=1;i<la;++i){ 25 for(int c=0;c<26;++c)for(int j=i+1;j;--j){ 26 int ok=1; 27 for(int k=1;k<=i&&k<j;++k)if(a[k]!=a[i-j+1+k])ok=0; 28 if(ok&&a[j]=='a'+c){nxt[i][c]=j;break;} 29 } 30 } 31 for(int L=lb-1;~L;--L){ 32 pc=0; 33 for(int i=1;i<=n;++i)for(int j=0;j<la;++j)o[i][j]=++pc,A[pc][pc]=1; pc++; 34 for(int i=1;i<=n;++i)for(int j=0;j<la;++j){ 35 A[o[i][j]][pc]=1; 36 for(int x=fir[i];x;x=l[x])if(nxt[j][v[x]]!=la) 37 if(v[x]+'a'==b[L+1])A[o[i][j]][pc]=(A[o[i][j]][pc]+1ll*qp(deg[i],mod-2)*dp[to[x]][nxt[j][v[x]]][L+1])%mod; 38 else A[o[i][j]][o[to[x]][nxt[j][v[x]]]]=(A[o[i][j]][o[to[x]][nxt[j][v[x]]]]-qp(deg[i],mod-2)+mod)%mod; 39 } 40 Gauss(); 41 for(int i=1;i<=n;++i)for(int j=0;j<la;++j)dp[i][j][L]=A[o[i][j]][pc]; 42 for(int i=1;i<=pc;++i)for(int j=1;j<=pc;++j)A[i][j]=0; 43 } 44 cout<<dp[1][0][0]<<endl; 45 }
T3:机
大意:提交答案题。用新语言编写代码完成任务。由于$spj$炸了所以没有常数限制。(别过分了)
你有一个下标$[0,10000120]$的数组,所有运算对$10000121$取模。
新语言支持:
$add a b c$:其中$c$必须是常量。该操作等价于$A[a]=b+c;$。(有取模,下同)
$mul a b c$:等价于$A[a]=b imes c;$
$pow a b c$:等价于$A[a]=b^c;$
$input a$:等价于$cin>>A[a];$
$output a$:等价于$cout<<a<<endl;$
$if a b string$:等价于$if(a==b)goto string;$
$label string$:等价于$string:;$
$test1:$读入一个数,输出它的$100000$次幂。
模拟。读懂题就给分。
1 input 1 2 pow 1 A[1] 100000 3 output A[1]
$test2:$读入$n$,再读入$n$个数。倒序输出。
模拟。需要实现$for$循环。两个$label$判断即可。
循环实现如果需要$-1$的话就$add mod-1$就行了。除法也就是乘法逆元。
1 input 0 2 3 label one 4 add 30001 A[30001] 1 5 input A[30001] 6 if A[0] A[30001] two 7 if 0 0 one 8 label two 9 10 label three 11 output A[A[0]] 12 add 0 A[0] 10000120 13 if A[0] 0 four 14 if 0 0 three 15 label four
$test3:$读入$n,q$,读入$A[1...n]$。再读入$q$对$l,r$。回答$prodlimits_{i=l}^{r} a_i$
这不太能模拟。但是是个很明显的前缀积。多分配一段空间来存前缀,然后运用快速幂直接求逆元就可以了。
1 input 33333 2 input 66666 3 add 0 0 1 4 5 label a 6 add 55555 A[55555] 1 7 input A[55555] 8 mul A[55555] A[A[55555]] A[A[77777]] 9 add 77777 A[77777] 1 10 if A[33333] A[55555] b 11 if 0 0 a 12 label b 13 14 label c 15 add 88888 A[88888] 1 16 input 123456 17 input 654321 18 add 123456 A[123456] 10000120 19 pow 99999 A[A[123456]] 10000119 20 mul 99999 A[99999] A[A[654321]] 21 output A[99999] 22 if A[88888] A[66666] d 23 if 0 0 c 24 label d
$test4:$读入$n$。是$2$的倍数输出$1$,否则输出$0$。
这个没想到,后面就都卡住了。
在模意义下,加减乘除貌似都不能区分奇偶数。
于是我们只能寄希望于快速幂。
然后常用但是却一时难以想起来的是$(-1)^i$可以用来判断奇偶。
1 input 0 2 pow 0 10000120 A[0] 3 if A[0] 1 gg 4 output 0 5 if 0 0 xx 6 label gg 7 output 1 8 label xx
$test5:$同上。$2$改成$3$。
我们在模意义下很难做好什么。但是在上一个测试点中我们成功的摆脱了模的限制。
我们能判断一个数的奇偶。我们还可以做常数的加减乘除。(除限定于整除)
那么我们就已经可以把一个数分解成二进制下的了。
二进制下,从高位到低位扫一遍,像做哈希一样,进制是$2$模数是$3$。
扫到底看是不是$0$就知道$3$的倍数与否了。
因为这数很小所以处理起来挺简单的。
1 input 1234567 2 add 0 0 0 3 add 1 0 1 4 add 2 0 2 5 add 3 0 0 6 add 4 0 1 7 add 5 0 2 8 9 add 12345 0 12345 10 11 label begin 12 pow 666666 10000120 A[1234567] 13 add 12345 A[12345] 1 14 if A[666666] 1 no 15 add A[12345] 0 1 16 add 1234567 A[1234567] 10000120 17 label no 18 mul 1234567 A[1234567] 5000061 19 if A[1234567] 0 gg 20 if 0 0 begin 21 label gg 22 23 24 add 54321 A[12345] 0 25 label bg 26 mul 100000 A[100000] 2 27 if A[A[54321]] 0 noadd 28 add 100000 A[100000] 1 29 label noadd 30 add 100000 A[A[100000]] 0 31 add 54321 A[54321] 10000120 32 if 12345 A[54321] fail 33 if 0 0 bg 34 label fail 35 36 if A[100000] 0 ok 37 if 0 0 skyh 38 label ok 39 output 1 40 if 0 0 xxx 41 label skyh 42 output 0 43 label xxx
$test6:$读入$a,b$输出$a+b$
同理啊,转化成二进制。
二进制加减法就简单多了。然而其实并不用考虑进位。
因为最后高位到低位扫下来不取模就可以了。
1 input 1234567 2 3 label begin 4 pow 666666 10000120 A[1234567] 5 add 12345 A[12345] 1 6 if A[666666] 1 no 7 add A[12345] 0 1 8 add 1234567 A[1234567] 10000120 9 label no 10 mul 1234567 A[1234567] 5000061 11 if A[1234567] 0 gg 12 if 0 0 begin 13 label gg 14 15 input 1234567 16 17 label bbegin 18 pow 666666 10000120 A[1234567] 19 add 123456 A[123456] 1 20 if A[666666] 1 noo 21 add A[123456] A[A[123456]] 1 22 add 1234567 A[1234567] 10000120 23 label noo 24 mul 1234567 A[1234567] 5000061 25 if A[1234567] 0 ggg 26 if 0 0 bbegin 27 label ggg 28 29 label bbbegin 30 add 12345 A[12345] 1 31 add 123456 A[123456] 10000120 32 if A[123456] 0 gggg 33 if 0 0 bbbegin 34 label gggg 35 36 label bbbbegin 37 mul 0 A[0] 2 38 if A[A[12345]] 0 xx 39 add 0 A[0] 1 40 if A[A[12345]] 1 xx 41 add 0 A[0] 1 42 label xx 43 add 12345 A[12345] 10000120 44 if A[12345] 0 ggggg 45 if 0 0 bbbbegin 46 label ggggg 47 48 output A[0]
$test7:$读入$n$,读入$n$个数,求和输出。不取模答案不超过$10000000$
有谁能想到这个鬼东西跟$BSGS$有关?
不让咱们做加法,那就做乘法啊。模数的原根是$3$所以我们可以算出$3^{a_1 + a_2 +...+a_n}$
算出来之后我们只需要知道它是原根的几次幂就好了。这是经典的$BSGS$问题。
因为乘法和快速幂都可以自由操作,所以其实就是一个很普通的$BSGS$
然而出题人更好的地方在于,$10000121-1=520 imes 19231$
需要灵活地使用数组安排内存。因为所有的数都在一个数组里所以撞上就坏事了。
然后等$BSGS$撞上之后有一个减法。然而并不是什么大事,用个循环直接减就是了。
1 input 0 2 add 2 1 0 3 label bg 4 input 1 5 pow 1 3 A[1] 6 mul 2 A[2] A[1] 7 add 0 A[0] 10000120 8 if A[0] 0 g 9 if 0 0 bg 10 label g 11 12 add 0 A[2] 0 13 add 1 0 0 14 15 pow 2 3 19231 16 add 4 A[2] 0 17 add 5 0 19231 18 label begin 19 add A[4] A[5] 0 20 add 5 A[5] 19231 21 mul 4 A[4] A[2] 22 if A[4] 1 gg 23 if 0 0 begin 24 label gg 25 26 add 4 0 0 27 add 5 0 0 28 if A[A[0]] 0 start 29 if 0 0 ggg 30 label start 31 add 4 A[4] 1 32 mul 0 A[0] 3 33 if A[A[0]] 0 start 34 label ggg 35 36 label qqq 37 add 4 A[4] 10000120 38 add A[0] A[A[0]] 10000120 39 if A[4] 0 end 40 if 0 0 qqq 41 label end 42 43 output A[A[0]]
$test8:$读入$a,b$求$gcd(a,b)$
大码力题。真难写。单单$label$就用了$30$多个,变量名都不知道用啥了。
辗转相除肯定不行了,又是除又是模的。用冷门一些的$stein$算法:不断去除因子$2$,然后大减小。
问题在于比较大小以及减法。
比较大小的话问题不大,直接转化成二进制然后比就可以了。
减法乍一下好像没法做,然而实际上我们又束缚住自己了:谁说不能是模意义下的减法了?
所以减去一个数等于加上一个数的相反数。所以码就是了。
真难写难调。让你瞬间感受到$C++$的魅力。
1 input 0 2 input 1 3 add 2 0 1 4 5 label f 6 pow 4 10000120 A[0] 7 pow 5 10000120 A[1] 8 if A[4] 10000120 out 9 if A[5] 10000120 out 10 mul 2 A[2] 2 11 mul 0 A[0] 5000061 12 mul 1 A[1] 5000061 13 if 0 0 f 14 label out 15 16 label g 17 pow 4 10000120 A[0] 18 if A[4] 10000120 h 19 mul 0 A[0] 5000061 20 if 0 0 g 21 label h 22 23 24 label x 25 26 label i 27 pow 5 10000120 A[1] 28 if A[5] 10000120 j 29 mul 1 A[1] 5000061 30 if 0 0 i 31 label j 32 33 add 10000 A[0] 0 34 add 11000 A[1] 0 35 add 1000 1000 0 36 add 1100 1100 0 37 38 label k 39 pow 233 10000120 A[10000] 40 add 1000 A[1000] 1 41 add A[1000] 0 0 42 if A[233] 1 u 43 add A[1000] 0 1 44 add 10000 A[10000] 10000120 45 label u 46 mul 10000 A[10000] 5000061 47 if A[10000] 0 l 48 if 0 0 k 49 label l 50 51 label m 52 pow 233 10000120 A[11000] 53 add 1100 A[1100] 1 54 add A[1100] 0 0 55 if A[233] 1 v 56 add A[1100] 0 1 57 add 11000 A[11000] 10000120 58 label v 59 mul 11000 A[11000] 5000061 60 if A[11000] 0 n 61 if 0 0 m 62 label n 63 64 add 9260817 A[1000] 9999121 65 add 9260818 A[1100] 9999021 66 67 label o 68 add 9260817 A[9260817] 1 69 add 9260818 A[9260818] 10000120 70 if A[9260818] 0 p 71 if 0 0 o 72 label p 73 74 add 9260817 A[9260817] 1000 75 add 9260818 A[9260817] 100 76 77 label q 78 79 if A[A[9260817]] A[A[9260818]] s 80 if A[A[9260817]] 1 bigger 81 if 0 0 smaller 82 label s 83 add A[9260817] 0 0 84 add A[9260818] 0 0 85 add 9260817 A[9260817] 10000120 86 add 9260818 A[9260818] 10000120 87 88 if A[9260817] 1000 smaller 89 if 0 0 q 90 91 label bigger 92 add 99999 A[0] 0 93 add 0 A[1] 0 94 add 1 A[99999] 0 95 96 label smaller 97 98 if A[9260817] 1000 hh 99 label qq 100 101 add A[9260817] 0 0 102 add A[9260818] 0 0 103 add 9260817 A[9260817] 10000120 104 add 9260818 A[9260818] 10000120 105 106 if A[9260817] 1000 hh 107 if 0 0 qq 108 label hh 109 110 mul 0 A[0] 10000120 111 112 add 10000 A[0] 0 113 add 11000 A[1] 0 114 add 1000 1000 0 115 add 1100 1100 0 116 117 label t 118 pow 233 10000120 A[10000] 119 add 1000 A[1000] 1 120 add A[1000] 0 0 121 if A[233] 1 w 122 add A[1000] 0 1 123 add 10000 A[10000] 10000120 124 label w 125 mul 10000 A[10000] 5000061 126 if A[10000] 0 z 127 if 0 0 t 128 label z 129 130 label a 131 pow 233 10000120 A[11000] 132 add 1100 A[1100] 1 133 add A[1100] 0 0 134 if A[233] 1 c 135 add A[1100] 0 1 136 add 11000 A[11000] 10000120 137 label c 138 mul 11000 A[11000] 5000061 139 if A[11000] 0 b 140 if 0 0 a 141 label b 142 143 add 9260817 A[1000] 9999121 144 add 9260818 A[1100] 9999021 145 label d 146 add 9260817 A[9260817] 1 147 add 9260818 A[9260818] 10000120 148 if A[9260818] 0 e 149 if 0 0 d 150 label e 151 152 add 9260817 A[9260817] 1000 153 add 9260818 A[9260817] 100 154 add 9260819 A[9260817] 0 155 156 label aa 157 158 if A[A[9260818]] 0 cc 159 add A[9260817] A[A[9260817]] 1 160 label cc 161 add A[9260818] 0 0 162 add 9260817 A[9260817] 10000120 163 add 9260818 A[9260818] 10000120 164 165 if A[9260817] 1000 bb 166 if 0 0 aa 167 label bb 168 169 add 1 0 0 170 171 label dd 172 173 mul 1 A[1] 2 174 if A[A[9260819]] 0 ff 175 add 1 A[1] 1 176 if A[A[9260819]] 1 ff 177 add 1 A[1] 1 178 label ff 179 add A[9260819] 0 0 180 add 9260819 A[9260819] 10000120 181 182 if A[9260819] 1000 ee 183 if 0 0 dd 184 label ee 185 186 mul 0 A[0] 10000120 187 188 add 222222 A[222222] 1 189 190 if A[1] 0 final 191 if 0 0 x 192 label final 193 mul 2 A[2] A[0] 194 output A[2]
$test9:$读入$n$,是质数输出$1$否则输出$0$。数巨范围$2000$
数据范围那么小,显然可以打表啊。
因为$spj$爆炸了所以直接交表可以过。但是还是可以优化的:
打出表之后建二进制$trie$压一下,每次在trie上走就行。能压掉一半。当然没有写。
1 input 0 2 if A[0] 2 prime 3 if A[0] 3 prime 4 if A[0] 5 prime 5 if A[0] 7 prime 6 if A[0] 11 prime 7 if A[0] 13 prime 8 if A[0] 17 prime 9 if A[0] 19 prime 10 if A[0] 23 prime 11 if A[0] 29 prime 12 if A[0] 31 prime 13 if A[0] 37 prime 14 if A[0] 41 prime 15 if A[0] 43 prime 16 if A[0] 47 prime 17 if A[0] 53 prime 18 if A[0] 59 prime 19 if A[0] 61 prime 20 if A[0] 67 prime 21 if A[0] 71 prime 22 if A[0] 73 prime 23 if A[0] 79 prime 24 if A[0] 83 prime 25 if A[0] 89 prime 26 if A[0] 97 prime 27 if A[0] 101 prime 28 if A[0] 103 prime 29 if A[0] 107 prime 30 if A[0] 109 prime 31 if A[0] 113 prime 32 if A[0] 127 prime 33 if A[0] 131 prime 34 if A[0] 137 prime 35 if A[0] 139 prime 36 if A[0] 149 prime 37 if A[0] 151 prime 38 if A[0] 157 prime 39 if A[0] 163 prime 40 if A[0] 167 prime 41 if A[0] 173 prime 42 if A[0] 179 prime 43 if A[0] 181 prime 44 if A[0] 191 prime 45 if A[0] 193 prime 46 if A[0] 197 prime 47 if A[0] 199 prime 48 if A[0] 211 prime 49 if A[0] 223 prime 50 if A[0] 227 prime 51 if A[0] 229 prime 52 if A[0] 233 prime 53 if A[0] 239 prime 54 if A[0] 241 prime 55 if A[0] 251 prime 56 if A[0] 257 prime 57 if A[0] 263 prime 58 if A[0] 269 prime 59 if A[0] 271 prime 60 if A[0] 277 prime 61 if A[0] 281 prime 62 if A[0] 283 prime 63 if A[0] 293 prime 64 if A[0] 307 prime 65 if A[0] 311 prime 66 if A[0] 313 prime 67 if A[0] 317 prime 68 if A[0] 331 prime 69 if A[0] 337 prime 70 if A[0] 347 prime 71 if A[0] 349 prime 72 if A[0] 353 prime 73 if A[0] 359 prime 74 if A[0] 367 prime 75 if A[0] 373 prime 76 if A[0] 379 prime 77 if A[0] 383 prime 78 if A[0] 389 prime 79 if A[0] 397 prime 80 if A[0] 401 prime 81 if A[0] 409 prime 82 if A[0] 419 prime 83 if A[0] 421 prime 84 if A[0] 431 prime 85 if A[0] 433 prime 86 if A[0] 439 prime 87 if A[0] 443 prime 88 if A[0] 449 prime 89 if A[0] 457 prime 90 if A[0] 461 prime 91 if A[0] 463 prime 92 if A[0] 467 prime 93 if A[0] 479 prime 94 if A[0] 487 prime 95 if A[0] 491 prime 96 if A[0] 499 prime 97 if A[0] 503 prime 98 if A[0] 509 prime 99 if A[0] 521 prime 100 if A[0] 523 prime 101 if A[0] 541 prime 102 if A[0] 547 prime 103 if A[0] 557 prime 104 if A[0] 563 prime 105 if A[0] 569 prime 106 if A[0] 571 prime 107 if A[0] 577 prime 108 if A[0] 587 prime 109 if A[0] 593 prime 110 if A[0] 599 prime 111 if A[0] 601 prime 112 if A[0] 607 prime 113 if A[0] 613 prime 114 if A[0] 617 prime 115 if A[0] 619 prime 116 if A[0] 631 prime 117 if A[0] 641 prime 118 if A[0] 643 prime 119 if A[0] 647 prime 120 if A[0] 653 prime 121 if A[0] 659 prime 122 if A[0] 661 prime 123 if A[0] 673 prime 124 if A[0] 677 prime 125 if A[0] 683 prime 126 if A[0] 691 prime 127 if A[0] 701 prime 128 if A[0] 709 prime 129 if A[0] 719 prime 130 if A[0] 727 prime 131 if A[0] 733 prime 132 if A[0] 739 prime 133 if A[0] 743 prime 134 if A[0] 751 prime 135 if A[0] 757 prime 136 if A[0] 761 prime 137 if A[0] 769 prime 138 if A[0] 773 prime 139 if A[0] 787 prime 140 if A[0] 797 prime 141 if A[0] 809 prime 142 if A[0] 811 prime 143 if A[0] 821 prime 144 if A[0] 823 prime 145 if A[0] 827 prime 146 if A[0] 829 prime 147 if A[0] 839 prime 148 if A[0] 853 prime 149 if A[0] 857 prime 150 if A[0] 859 prime 151 if A[0] 863 prime 152 if A[0] 877 prime 153 if A[0] 881 prime 154 if A[0] 883 prime 155 if A[0] 887 prime 156 if A[0] 907 prime 157 if A[0] 911 prime 158 if A[0] 919 prime 159 if A[0] 929 prime 160 if A[0] 937 prime 161 if A[0] 941 prime 162 if A[0] 947 prime 163 if A[0] 953 prime 164 if A[0] 967 prime 165 if A[0] 971 prime 166 if A[0] 977 prime 167 if A[0] 983 prime 168 if A[0] 991 prime 169 if A[0] 997 prime 170 if A[0] 1009 prime 171 if A[0] 1013 prime 172 if A[0] 1019 prime 173 if A[0] 1021 prime 174 if A[0] 1031 prime 175 if A[0] 1033 prime 176 if A[0] 1039 prime 177 if A[0] 1049 prime 178 if A[0] 1051 prime 179 if A[0] 1061 prime 180 if A[0] 1063 prime 181 if A[0] 1069 prime 182 if A[0] 1087 prime 183 if A[0] 1091 prime 184 if A[0] 1093 prime 185 if A[0] 1097 prime 186 if A[0] 1103 prime 187 if A[0] 1109 prime 188 if A[0] 1117 prime 189 if A[0] 1123 prime 190 if A[0] 1129 prime 191 if A[0] 1151 prime 192 if A[0] 1153 prime 193 if A[0] 1163 prime 194 if A[0] 1171 prime 195 if A[0] 1181 prime 196 if A[0] 1187 prime 197 if A[0] 1193 prime 198 if A[0] 1201 prime 199 if A[0] 1213 prime 200 if A[0] 1217 prime 201 if A[0] 1223 prime 202 if A[0] 1229 prime 203 if A[0] 1231 prime 204 if A[0] 1237 prime 205 if A[0] 1249 prime 206 if A[0] 1259 prime 207 if A[0] 1277 prime 208 if A[0] 1279 prime 209 if A[0] 1283 prime 210 if A[0] 1289 prime 211 if A[0] 1291 prime 212 if A[0] 1297 prime 213 if A[0] 1301 prime 214 if A[0] 1303 prime 215 if A[0] 1307 prime 216 if A[0] 1319 prime 217 if A[0] 1321 prime 218 if A[0] 1327 prime 219 if A[0] 1361 prime 220 if A[0] 1367 prime 221 if A[0] 1373 prime 222 if A[0] 1381 prime 223 if A[0] 1399 prime 224 if A[0] 1409 prime 225 if A[0] 1423 prime 226 if A[0] 1427 prime 227 if A[0] 1429 prime 228 if A[0] 1433 prime 229 if A[0] 1439 prime 230 if A[0] 1447 prime 231 if A[0] 1451 prime 232 if A[0] 1453 prime 233 if A[0] 1459 prime 234 if A[0] 1471 prime 235 if A[0] 1481 prime 236 if A[0] 1483 prime 237 if A[0] 1487 prime 238 if A[0] 1489 prime 239 if A[0] 1493 prime 240 if A[0] 1499 prime 241 if A[0] 1511 prime 242 if A[0] 1523 prime 243 if A[0] 1531 prime 244 if A[0] 1543 prime 245 if A[0] 1549 prime 246 if A[0] 1553 prime 247 if A[0] 1559 prime 248 if A[0] 1567 prime 249 if A[0] 1571 prime 250 if A[0] 1579 prime 251 if A[0] 1583 prime 252 if A[0] 1597 prime 253 if A[0] 1601 prime 254 if A[0] 1607 prime 255 if A[0] 1609 prime 256 if A[0] 1613 prime 257 if A[0] 1619 prime 258 if A[0] 1621 prime 259 if A[0] 1627 prime 260 if A[0] 1637 prime 261 if A[0] 1657 prime 262 if A[0] 1663 prime 263 if A[0] 1667 prime 264 if A[0] 1669 prime 265 if A[0] 1693 prime 266 if A[0] 1697 prime 267 if A[0] 1699 prime 268 if A[0] 1709 prime 269 if A[0] 1721 prime 270 if A[0] 1723 prime 271 if A[0] 1733 prime 272 if A[0] 1741 prime 273 if A[0] 1747 prime 274 if A[0] 1753 prime 275 if A[0] 1759 prime 276 if A[0] 1777 prime 277 if A[0] 1783 prime 278 if A[0] 1787 prime 279 if A[0] 1789 prime 280 if A[0] 1801 prime 281 if A[0] 1811 prime 282 if A[0] 1823 prime 283 if A[0] 1831 prime 284 if A[0] 1847 prime 285 if A[0] 1861 prime 286 if A[0] 1867 prime 287 if A[0] 1871 prime 288 if A[0] 1873 prime 289 if A[0] 1877 prime 290 if A[0] 1879 prime 291 if A[0] 1889 prime 292 if A[0] 1901 prime 293 if A[0] 1907 prime 294 if A[0] 1913 prime 295 if A[0] 1931 prime 296 if A[0] 1933 prime 297 if A[0] 1949 prime 298 if A[0] 1951 prime 299 if A[0] 1973 prime 300 if A[0] 1979 prime 301 if A[0] 1987 prime 302 if A[0] 1993 prime 303 if A[0] 1997 prime 304 if A[0] 1999 prime 305 output 0 306 if 0 0 notprime 307 label prime 308 output 1 309 label notprime
$test10:$写一个代码,其中至少有一个阿拉伯数字,输出你代码里出现的每个数字$+1$。
首先每次$output$就一定有一个阿拉伯数字了,为了让最后输出个数与阿拉伯数字数相同,肯定是有循环结构出现了。
如果代码里出现的数字有很多种,肯定不方便,我们让所有出现的数字都是$1$
然后我们就可以$add 1 1 1$使得$A[1]=2$。我们就可以通过一种阿拉伯数字$1$调用两种变量了。
然有了数字$2$我们也就可以实现循环了。然后只要在代码里添加若干$output 1$让数量相同就可以了。
1 add 1 1 1 2 label begin 3 output A[1] 4 output A[1] 5 output A[1] 6 output A[1] 7 output A[1] 8 output A[1] 9 output A[1] 10 output A[1] 11 output A[1] 12 output A[1] 13 if A[A[1]] A[1] gg 14 add A[1] 1 1 15 if 1 1 begin 16 label gg
有意思。博客新背景候选: