目录
1.内存空间
1.内存空间
真的要吐了,人都麻了题还没看完,看样子就是要想办法提取出来想要的东西2022第十三届蓝桥杯决赛C/C++大学A组-C题内存空间_蓝桥杯a组c语言题目-CSDN博客
这个是一个非常清晰的代码,好几个帖子都管这个题叫大模拟题,搜了一下大概就是情况很复杂,要慢慢分析,把情况找全了去模拟那种手算的方式,这种就是纯想办法了
从题目来看是分五种情况,由于cin>>string是按行输入的,所以可以自然的就接收一整行了,然后就去里面找=。数字大部分都是在等号后面出现的,如果是数组的话要找[和],如果是字符串的话就是要找" "之间的长度了,分完类之后就可以开始入手了
啊啊啊不得不说这是一个耗费时间的纸老虎啊,思路不难,写起来太浪费时间了,调试了很久
#include <bits/stdc++.h>using namespace std;long long stol(string s)
{long long n,i,ans=0;n=s.size();for(i=1;i<n;i++){ans=ans*10+(s[i]-'0');}return ans;
}main()
{string s,st;char a;long long ans=0;long long t,i,j,k,x;cin>>t;for(i=0;i<t;i++){cin>>a;getline(cin,s);if(a=='i'){for(j=0;j<s.size();j++){if(s[j]=='=' && s[j+1]>='0' && s[j+1]<='9') ans=ans+4;else if(s[j]=='=' && (s[j+1]<='0' || s[j+1]>='9')){st=' ';for(k=j;k<s.size();k++){if(s[k]=='['){while(s[k]!=']'){st=st+s[k];k++;}}x=stol(st);cout<<st<<endl;cout<<x<<endl;cout<<ans<<endl;ans=ans+(8*x);x=0;st=' ';j=k;}}}}else if(a=='l'){for(j=0;j<s.size();j++){if(s[j]=='=' && s[j+1]>='0' && s[j+1]<='9') ans=ans+8;else if(s[j]=='=' && (s[j+1]<='0' || s[j+1]>='9')){st=' ';for(k=j;k<s.size();k++){if(s[k]=='['){k=k+1;while(s[k]!=']'){st=st+s[k];k++;}}x=stol(st);cout<<st<<endl;cout<<x<<endl;cout<<ans<<endl;ans=ans+(8*x);x=0;st=' ';j=k;}}}}else if(a=='S'){cout<<"*********************"<<endl;for(j=0;j<s.size();j++){if(s[j]=='='){cout<<"//"<<endl;st=' ';for(k=j+1;k<s.size();k++){if(s[k]=='"'){k=k+1;while(s[k]!='"'){st=st+s[k];k++;}cout<<st<<endl;}ans=ans+st.size()-1;st=' ';j=k;}}}}}cout<<ans;
}
/*
1
long[] nums=new long[131072];
4
int a=0,b=0;
long x=0,y=0;
String s1="hello",s2="world";
long[] arr1=new long[100000],arr2=new long[100000];
*/