3053. 神秘信息

10154601131

啊,不允许一进制的存在,多么无害而致命的提示啊

10175101170

首位不能是0……竟然只有一位的时候也不能是0[\吐血]

10175101103-STARK

需要注意的是powx参数和返回值是double,会有精度问题,要自己另外写一个pow
还有因为没有一进制所以00000之类的要单独当二进制处理。。

10175102262 LarsPendragon

为啥要另写一个pow啊……x=(int)(pow(a,b)+0.5)不就可以了吗……

LzQuarter

幸好没有负数的可能= =

10152130230

攻击oj真是人生乐趣,帮我看看哪里错了

include

include

include

include

int cmp(const voida,const voidb)
{
return (char)a-(char)b;
}

int main()
{ int i,t;
long long w[650]={0},x,a,b,q=1,z=1;
char s[650],p[650];
long long y=0;
scanf(“%d\n”,&t);
for (i=0;i<t;i++)
{ printf(“case #%d:\n”,i);
memset(s,0,sizeof(s));
memset(w,0,sizeof(w));
memset(p,0,sizeof(p));
z=1;
y=0;
scanf(“%s”,s);
x=strlen(s);
for(a=0;a<x;a++)
p[a]=s[a];
qsort(p,x,sizeof(p[0]),cmp);
for(a=1;a<x;a++)
if(p[a-1]!=p[a])
z++;
w[0]=1;
q=-1;
y+=w[0]pow(z,x-1);
for(a=1;a<x;a++)
{
for(b=0;b<a;b++)
{
if(s[a]==s[b])
{
w[a]=w[b];
break;
}
}
if(b==a)
{
q++;
if(q==1)
q++;
w[a]=q;}
y+=w[a]
pow(z,x-a-1);
}
printf(“%I64d\n”,y);
}
return 0;
}

10152130230

3053
[em:01]

10175102262 LarsPendragon

把printf的%LLd换成%lld就过了是什么操作

爱丽丝_青贝尔克

如果从低位到高位一路pow过去好像会出精度问题。。。

功夫橘猫

include

include

using namespace std;

int main()
{
int t;
cin>>t;
for(int i=0;i>message;
int length=strlen(message);
int sum=0;

    int digit[36];
    memset(digit,-1,sizeof(digit));

    int is_contain[36];
    memset(is_contain,0,sizeof(is_contain));
    int flag=1;
    int MAX=1;
    for(int j=0;j<length;++j)
    {
        if(j==0)
        {
            num[j]=1;
            if(message[j]>='0'&&message[j]<='9'){
                is_contain[message[j]-'0']=1;
                digit[message[j]-'0']=1;
            }
            else
            {
                is_contain[message[j]-'a'+10]=1;
                digit[message[j]-'a'+10]=1;
            }
        }
        else if(j>0&&flag&&message[j]!=message[0])
        {
            num[j]=0;
            flag=0;
            if(message[j]>='0'&&message[j]<='9'){
                is_contain[message[j]-'0']=1;
                 digit[message[j]-'0']=0;
            }
            else
            {
                is_contain[message[j]-'a'+10]=1;
                digit[message[j]-'a'+10]=0;
            }
        }
        else
        {
            if(message[j]>='0'&&message[j]<='9'){
                if(is_contain[message[j]-'0'])
                  num[j]=digit[message[j]-'0'];
                else
                {
                    is_contain[message[j]-'0']=1;
                    num[j]=digit[message[j]-'0']=MAX+1;
                    MAX++;
                }
            }
            else
            {
                if(is_contain[message[j]-'a'+10])
                   num[j]=digit[message[j]-'a'+10];
                else
                {
                    is_contain[message[j]-'a'+10]=1;
                    num[j]=digit[message[j]-'a'+10]=MAX+1;
                    MAX++;
                }
            }
        }
        //cout<<num[j]<<endl;
    }
    //cout<<MAX<<endl;
    cout<<"case #"<<i<<':'<<endl;
    long long ans=0;
    for(int j=0;j<length;++j)
    {
        ans+=ans*MAX+num[j];
    }
    cout<<ans<<endl;
}
return 0;

}

Coriolis

“不允许一进制的存在”需要深刻准确地理解这句话的含义

徐摆渡

此题坑点:
1.答案开ll
2.不允许一进制,手动调成二进制

SNORLAX

以为数码就是0-9中的一个数……最后发现不是……

你当前正在回复 博客/题目
存在问题!