[考试反思]0304省选模拟37:面对

 

$T1$比较简单,虽说正解是$O(n)$的但是没卡$O(nlogn)$的。那就比较简单了。

$T2$写的正解,数组开小+被卡常。也没什么好说的。

然后$T3$又是一个可爱的提交答案题。然而主要是$T1/2$调太久了,所以剩下思考它的事件也不多了。

 其实不是很可想。得亏没有把太多时间砸在上面。

而且貌似$spj$写挂了的样子,评分参数没什么用。

(这么毒瘤难写的题再卡常谁还会去做啊!!!)

改题也就没啥好说的。中午花了点时间卡常把$T2$卡常。

然后剩下下午加晚上的时间砸在$T3$上刚好做出来。

 

T1:奶酪

大意:树。求断开每条边后,两个联通块分别的直径。$n \le 2 \times 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\n",ans);
72 }
View Code

 

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 }
View Code

 

T3:机

大意:提交答案题。用新语言编写代码完成任务。由于$spj$炸了所以没有常数限制。(别过分了)

你有一个下标$[0,10000120]$的数组,所有运算对$10000121$取模。

新语言支持:

$add \ a \ b \ c$:其中$c$必须是常量。该操作等价于$A[a]=b+c;$。(有取模,下同)

$mul  \ a \ b \ c$:等价于$A[a]=b \times 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]
View Code

 $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
View Code

 $test3:$读入$n,q$,读入$A[1...n]$。再读入$q$对$l,r$。回答$\prod\limits_{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
View Code

$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
View Code

 $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
View Code

 $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]
View Code

 $test7:$读入$n$,读入$n$个数,求和输出。不取模答案不超过$10000000$

有谁能想到这个鬼东西跟$BSGS$有关?

不让咱们做加法,那就做乘法啊。模数的原根是$3$所以我们可以算出$3^{a_1 + a_2 +...+a_n}$

算出来之后我们只需要知道它是原根的几次幂就好了。这是经典的$BSGS$问题。

因为乘法和快速幂都可以自由操作,所以其实就是一个很普通的$BSGS$

然而出题人更好的地方在于,$10000121-1=520 \times 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]]
View Code

 $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]
View Code

 $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
View Code

 $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
View Code

 有意思。博客新背景候选:

 

posted @ 2020-03-04 22:14  DeepinC  阅读(279)  评论(0编辑  收藏  举报