- #include<bits/stdc++.h>
- #define ll long long
- #define ull unsigned long long
- #define mem(a,x) memset(a,x,sizeof(a))
- using namespace std;
- const int MAXN=1e6+5;
- int ope,cnt,a[MAXN];
- ll n,tmp,ans,k;
- string s,tmps;
- void change2ten() {
- tmp=0;
- for(int i=0; i<tmps.size(); ++i) {
- tmp*=k;
- if(tmps[i]<='9'&&tmps[i]>='0') {
- tmp+=tmps[i]-'0';
- } else {
- tmp+=tmps[i]-'A'+10;
- }
- }
- }
- void change2k() {
- if(!ans) {cout<<0<<endl; return;}
- cnt=0,tmp=ans;
- while(tmp) {
- a[++cnt]=tmp%k;
- tmp/=k;
- }
- for(int i=cnt; i>=1; --i)
- if(a[i]<=9) cout<<a[i];
- else printf("%c",a[i]+'A'-10);
- cout<<endl;
- }
- int main() {
- cin>>n;
- k=10;
- for(int i=1; i<=n; ++i) {
- cin>>s;
- if(s=="EQUAL") change2k();
- else if(s=="CLEAR") tmp=ans=ope=0;
- else if(s=="ADD")
- ope=1;
- else if(s=="SUB")
- ope=2;
- else if(s=="MUL")
- ope=3;
- else if(s=="DIV")
- ope=4;
- else if(s=="MOD")
- ope=5;
- else if(s=="NUM") {
- cin>>tmps;
- change2ten();
- switch(ope) {
- case 0:
- ans=tmp;
- break;
- case 1:
- ans+=tmp;
- break;
- case 2:
- ans-=tmp;
- break;
- case 3:
- ans*=tmp;
- break;
- case 4:
- ans/=tmp;
- break;
- case 5:
- ans%=tmp;
- break;
- }
- } else if(s=="CHANGE")
- cin>>k;
- }
- }
小计算器
合根植物 http://lx.lanqiao.cn/problem.page?gpid=T458
- #include<bits/stdc++.h>
- using namespace std;
- const int MAXN=1e6+5;
- int par[MAXN];
- int n,a,b,x,y;
- void init() {
- for(int i=0; i<=a*b; ++i) par[i]=i;
- }
- int Find (int a) {
- return a == par[a] ? a : par[a] = Find (par[a]);
- }
- void join (int a, int b) {
- par[Find (a)] = Find (b);
- }
- int main() {
- int cnt=0;
- scanf("%d %d %d",&a,&b,&n);
- init();
- for(int i=1; i<=n; ++i) {
- scanf("%d %d",&x,&y);
- join(x,y);
- }
- for(int i=1; i<=a*b; ++i) if(par[i]==i) ++cnt;
- cout<<cnt<<endl;
- }
合根植物
来源: http://www.bubuko.com/infodetail-2946262.html