806
技術社區[雲棲]
poj 2190 ISBN
一次A!
這種題目要得就是思路清晰,細心,考慮周全。。。
然後。。然後就沒了。。。
注意字符串和int型數據的轉來轉去。。。
AC的代碼:
#include <stdio.h>
char ISBN[12];
void find(int sum,int pos)
{
//找出那個數字是什麼
int i;
if(pos!=9 && pos!=-1)
{
//如果不是最後一位看不清
for(i=0;i<=9;i++)
{
if( (sum+i*(10-pos))%11==0 )
{
printf("%d\n",i);
return;
}
}
}
else if(pos==9 && pos!=-1)
{
for(i=0;i<=10;i++)
{
if((sum+i*(10-pos))%11==0 && i==10)
{
printf("X\n");
return;
}
if( (sum+i*(10-pos))%11==0)
{
printf("%d\n",i);
return;
}
}
}
printf("-1\n");
}
void work()
{
int pos=-1;//存放問號位置
int i;
int sum=0;//算除了問號位的總和
int num;//每一位數的整型形式
for(i=0;i<10;i++)
{
if(ISBN[i]=='?')
{
pos=i;
continue;
}
if(ISBN[i]=='X')
num=10;
else
num=ISBN[i]-48;
sum+=(10-i)*num;
}
//printf("%d\n",sum);
find(sum,pos);
}
int main()
{
//輸入
scanf("%s",ISBN);
work();
return 0;
}
最後更新:2017-04-03 05:39:54