麻辣小猪蹄 2022-02-16 17:04 采纳率: 33.3%
浏览 22

pta团体天梯赛L1-050

img


想知道有哪些测试数据


#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    string line="zzzzzz";
    int L,N;
    cin>>L>>N;
    if(N<0)
    {
        int m=pow(26,L);
        N=m+N;
    }
    int index=L-1,help_1=N,help_2;
    while(true)
    {
        if(N==0)
        {
            line="aaaaaa";
            break;
        }
        help_2=help_1%26;
        help_1=help_1/26;
        if(index==L-1 && help_2!=0)
            line[index]-=help_2-1;
        if(index!=L-1 && help_2!=0)
            line[index]-=help_2;
        if(help_2==0)
        {
            line[index]='a';
            line[index-1]-=help_1-1;
            break;
        }
        index--;
        if(help_1<26)
        {
            if(index==L-1)
                line[index]-=help_1-1;
            else
                line[index]-=help_1;
            break;
        }
    }
    for(int i=0;i<L;i++)
        cout<<line[i];
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 关注

    3个正确,1个错误,很可能是边界值处理有问题。参考下面的代码:

    
    #include<iostream>
    #include<math.h>
    #include<string>
    using namespace std;
    int main()
    {
        int l,n,m=1,x,y;
        char a[6];
       cin>>l>>n;
        
       
        m= pow(26,l);
        n=m-n;
        y=l;
        
        while(l--)
        {
            x=n%26;
            a[l]='a'+x;//第一次算出来的字符是字符串中的第L个的字符,第二次算出来的字符是字符串中的第L-1个字符
            n=n/26;
        }
        for(int i=0;i<y;i++)
            cout<<a[i]; //printf("%c",a[i]);//所以最后输出的时候是要倒着输出的
        return 0;
    }
    
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 2月16日

悬赏问题

  • ¥15 关于遇到一个python,django,redis,uwsgi,nginx搭的一个企业微信修改AD密码的平台的问题!
  • ¥15 读取parquet文件某一列的数据但是输出是整个列名和格式
  • ¥15 机动目标 制导律建模问题
  • ¥100 求Java socks 转发实现Demo
  • ¥20 随身WiFi移动网络访问不了
  • ¥50 RAD_XE11.3获取android11手机的IMEI码
  • ¥15 linux的gcc命令报错
  • ¥20 如何再GIS用海岸线建立缓冲区
  • ¥15 codeblock遇到问题了,求帮助😭
  • ¥15 Qt6.8.0加载网页MSVC2022