1 条题解

  • 0
    @ 2025-8-24 21:31:39

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar hmh13951417981
    这个蒟蒻很懒,什么都没留下

    搬运于2025-08-24 21:31:39,当前版本为作者最后更新于2019-03-22 21:08:04,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    一道调了好久的水题

    其实主要是被标题吸引的 虽然好像我还不太需要这种计算

    本题主要要处理正序存储,本蒟蒻是用数组模拟的

    	num=s[i]-'A'+st;//算出数
    	w=10000,flag=0;//由于最大就10000,所以除数最大为10000
    	while(w){
    		if(num>=w) flag=1;//如果发现现在这个位置比除数大,就要开始录入了
    		if(flag) a[++sum]=num/w;//分离数位
    		num=num%w;
    		w/=10;//向下一个数位进军
    	}
    

    然后就是纯模拟,后一位加到前一位


    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int a[101],st,i,num,sum,w;
    bool flag;
    int main()
    {	cin>>s>>st;//输入
    	for(i=0;i<s.size();i++)
    	{num=s[i]-'A'+st;//算出数
    	w=10000,flag=0;
    	while(w){
    		if(num>=w) flag=1;
    		if(flag) a[++sum]=num/w;
    		num=num%w;
    		w/=10; 
    	}	}//正序存储
    	while(sum>2){
    		if(sum==3&&a[1]==1&&a[2]==0&&a[3]==0){
    			cout<<100; return 0;
    		}//特判(如果是100 直接输出)
    		for(i=1;i<sum;i++)
    		a[i]=(a[i]+a[i+1])%10;//和取个位
    		sum--;		      //位数减一
    	}
    	if(sum==1) cout<<a[1];//特判,如果只有一位就只输出一位
    	else cout<<a[1]*10+a[2];//否则输出正常的数(这里这样写可以去前导0)
      	return 0;
    }
    

    最后百无聊赖的我测了几组和基友的数据

    输入:HMHYY 520 输出:75

    输入:HMHZYX 520 输出:97

    输入:HMHLSH 520 输出:77

    可以通过这道题测一测“缘分”,但是

    Don't be sad if the result of you and your sweetie is not 100. That's no big deal.

    • 1

    信息

    ID
    866
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者