1. 程式人生 > >藍橋杯訓練記錄

藍橋杯訓練記錄

ebe clu color print class max eof lan aps

小計算器

技術分享圖片
 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 #define ull unsigned long long
 4 #define mem(a,x) memset(a,x,sizeof(a))
 5 using namespace std;
 6 
 7 const int MAXN=1e6+5;
 8 
 9 int ope,cnt,a[MAXN];
10 ll n,tmp,ans,k;
11 string s,tmps;
12 
13 void change2ten() {
14
tmp=0; 15 for(int i=0; i<tmps.size(); ++i) { 16 tmp*=k; 17 if(tmps[i]<=9&&tmps[i]>=0) { 18 tmp+=tmps[i]-0; 19 } else { 20 tmp+=tmps[i]-A+10; 21 } 22 } 23 } 24 25 void change2k() { 26 if(!ans) {cout<<0
<<endl; return;} 27 cnt=0,tmp=ans; 28 while(tmp) { 29 a[++cnt]=tmp%k; 30 tmp/=k; 31 } 32 for(int i=cnt; i>=1; --i) 33 if(a[i]<=9) cout<<a[i]; 34 else printf("%c",a[i]+A-10); 35 cout<<endl; 36 } 37 38 int main() {
39 cin>>n; 40 k=10; 41 for(int i=1; i<=n; ++i) { 42 cin>>s; 43 if(s=="EQUAL") change2k(); 44 else if(s=="CLEAR") tmp=ans=ope=0; 45 else if(s=="ADD") 46 ope=1; 47 else if(s=="SUB") 48 ope=2; 49 else if(s=="MUL") 50 ope=3; 51 else if(s=="DIV") 52 ope=4; 53 else if(s=="MOD") 54 ope=5; 55 else if(s=="NUM") { 56 cin>>tmps; 57 change2ten(); 58 switch(ope) { 59 case 0: 60 ans=tmp; 61 break; 62 case 1: 63 ans+=tmp; 64 break; 65 case 2: 66 ans-=tmp; 67 break; 68 case 3: 69 ans*=tmp; 70 break; 71 case 4: 72 ans/=tmp; 73 break; 74 case 5: 75 ans%=tmp; 76 break; 77 } 78 } else if(s=="CHANGE") 79 cin>>k; 80 81 } 82 }
小計算器

合根植物

技術分享圖片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int MAXN=1e6+5;
 5 
 6 int par[MAXN];
 7 int n,a,b,x,y;
 8 
 9 void init() {
10     for(int i=0; i<=a*b; ++i) par[i]=i;
11 }
12 
13 int Find (int a) {
14     return a == par[a] ? a : par[a] = Find (par[a]);
15 }
16 
17 void join (int a, int b) {
18     par[Find (a)] = Find (b);
19 }
20 
21 int main() {
22     int cnt=0;
23     scanf("%d %d %d",&a,&b,&n);
24     init();
25     for(int i=1; i<=n; ++i) {
26         scanf("%d %d",&x,&y);
27         join(x,y);
28     }
29     for(int i=1; i<=a*b; ++i) if(par[i]==i) ++cnt;
30     cout<<cnt<<endl;
31 }
合根植物

藍橋杯訓練記錄