2 条题解

  • 0
    @ 2022-11-19 16:58:07

    大模拟

    #include<bits/stdc++.h>
    using namespace std;
    string a,b;
    int tacit(int fir)
    {
    	//合成字符串 
    	string A;
    	if(fir==1)A=a+b;
    	else A=b+a;
    	//转化为数值 
    	int al=A.length();
    	int x[al];
    	for(int i=0;i<al;i++)
    		x[i]=A[i]-'a';
    	//大模拟 
    	bool now=0;//0在x,1在y 
    	while(al>1)
    	{
    		for(int i=0;i<al-1;i++)
    			x[i]=(x[i]+x[i+1])%10;
    		al--;
    	}
    	return x[0];
    }
    int main()
    {
    	cin>>a>>b;
    	cout<<max(tacit(1),tacit(0))<<"\n";
    	return 0;
    }
    
    • 0
      @ 2022-11-5 18:00:12

      代码写的有亿点乱,见谅

      默契程度:

      输入两个名字然后拼接到一起,需要考虑拼接的顺序。然后对于每一个字母对应的有一个数值(实际上就是该字母的ASCII码-'a'),类似杨辉三角的相加并且对10取模,最终输出最大的一个默契程度值。

      上代码

      #include<bits/stdc++.h>
      using namespace std;
      string a,c,d;
      int x[2010],maxx;
      void mq(int leng)  //leng记录当前实际上剩下了几个元素需要处理 
      {
      	if(leng==1) return;
      //如果当前的‘倒杨辉三角 ’已经加和剩下了一个元素就结束 
      	for(int i=1;i<=leng;i++)
      		x[i]=(x[i]+x[i+1])%10;
      //否则对于每一位新的数值都等于上一个状态的i、i+1两个值想加 
      	mq(leng-1);  //调用下一层 
      	return;
      }
      void bj()
      {
      	for(int i=0;i<a.size();i++)
      		x[i+1]=(a[i]-'a')%10;  //转换字符为数值,注意取模 
      	mq(a.size());  //计算默契值 
      }
      int main()
      {
      	cin>>c>>d;  //输入 
      	a=c+d;  //c、d这样拼接 
      	bj();  //转换成数字、计算默契值 
      	maxx=max(maxx,x[1]);  //记录最大的默契值 
      	a=d+c;  //d、c这样拼接 
      	bj();
      	maxx=max(maxx,x[1]);  //同上 
      	cout<<maxx;
          return 0;
      }
      
      
      • 1

      信息

      ID
      1126
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      递交数
      31
      已通过
      20
      上传者