0
已解决
黄子扬
初级天翼
初级天翼
自己debug了很久,两个样例也都过了,确信没错【doge】,交上去却WA0分了,还不能下载数据/kk
#include<bits/stdc++.h>
using namespace std;
string s;
int ST,num[105][105],f,x,a[105],ret;
void debug(int i)
{
for(int j=1;j<=f;j++)
printf("%d ",num[i][j]);
printf("\n");
}
void output(int i,int f)
{
if(f-i+1==1)
printf("%d",num[i][1]),ret=1;
else if(f-i+1==2&&num[i][1]!=0)
printf("%d%d",num[i][1],num[i][2]),ret=1;
else if(f-i+1==3&&num[i][1]==1&&num[i][2]==0&&num[i][3]==0)
printf("%d%d%d",num[i][1],num[i][2],num[i][3]),ret=1;
}
int main()
{
getline(cin,s);
scanf("%d",&ST);
for(int i=s.size()-1;i>=0;i--)
{
x=s[i]-'A'+ST;
while(x)
{
a[++f]=x%10;
x/=10;
}
}
for(int i=1;i<=f;i++)
num[1][i]=a[f-i+1];
//debug(1);
for(int i=2;i<=f;i++)
{
for(int j=1;j<=f-i+1;j++)
num[i][j]=(num[i-1][j]+num[i-1][j+1])%10;
//debug(i);
output(i,f);
if(ret)
return 0;
}
return 0;
}
求dalao给我hack啊啊啊啊啊啊,当然,这题我的二维写法纯属弱智,一维写法也是没有后效性的QwQ
0
已采纳
杜智宸
中级光能
中级光能
打开题解【狗头】
开玩笑的啦
思路给你了,自己想想吧
首先考虑下怎么把数字转换成字符串
因为题目给出的字符串只包含大写字符,所以我们可以用 当前字符减去'A'得到这个字符在26个大写字母中的位置。然后对于每一位进行了如上运算的数字来说,它不一定是一个0~9的数字,因此我们无法直接将其转换成字符。那么我们可以把这个数字的 每一位分离出来,单独转换为字符再加起来合并成一个字符串。
但是对于上面所说的字符串,还存在一个问题。比如我们把数字123分离后,按顺序来说我们得到的字符串应该是 321,因此,我们还要 进行一次旋转操作,将运算出来的字符串转换为 正确顺序的字符串。
其次考虑下解是否合法
在我们把数字转换为字符串后,还要对其相邻的数字进行相加。出现解的情况有:当前字符串为"100",或者当前字符串长度小于等于2。针对上面的条件而言,我们可以将原来的字符串 进行若干次相加操作,直到满足了这两个条件之一
0