题解 | #[NOIP2008]ISBN号码#

[NOIP2008]ISBN号码

https://ac.nowcoder.com/acm/problem/16617

解决此题有几大关键之处,首先,要灵活运用将字符转换成整型,方便进行数值的运算,其次要考虑识别码为“X”的情况,我们可以通过特定的代码实现与前面数乘积之和求余的比较,来判定识别码是否为“X”的情况,若比较成功,则输出Right,不成功则输出正确的码,若有“X”情况则在识别码写“X”,即可解决此题

import java.util.*; public class Main {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.next();
char[] c=new char[13];
for(int i=0;i<str.length();i++) {
	c[i]=str.charAt(i);
}
int c1=Integer.parseInt(Character.toString(c[0]));
int c2=Integer.parseInt(Character.toString(c[2]));
int c3=Integer.parseInt(Character.toString(c[3]));
int c4=Integer.parseInt(Character.toString(c[4]));
int c5=Integer.parseInt(Character.toString(c[6]));
int c6=Integer.parseInt(Character.toString(c[7]));
int c7=Integer.parseInt(Character.toString(c[8]));
int c8=Integer.parseInt(Character.toString(c[9]));
int c9=Integer.parseInt(Character.toString(c[10]));
int ccc;
if(c[12]=='X') {
	 ccc=999;
}
else {
	 ccc=Integer.parseInt(Character.toString(c[12]));
}


int a=(c1+c2*2+c3*3+c4*4+c5*5+c6*6+c7*7+c8*8+c9*9)%11;
if(a==10) {
	a=999;
}
int b=ccc;
if(a==b) {
	System.out.println("Right");
}
else {
	if(a==999) {
		System.out.println(str.substring(0,12)+"X");
	}
	else {
		System.out.println(str.substring(0,12)+a);
	}
	
}

}

}

全部评论

相关推荐

机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务