文章目录
- P1055 [NOIP2008 普及组] 题解
-
- Java 代码
- 关键分析
P1055 [NOIP2008 普及组] 题解
题目链接
Java 代码
package luoguTest;import java.util.Scanner;public class P1055 {
public static void main(String args[]) {
// x-xxx-xxxxx-xScanner sc = new Scanner(System.in);String str = sc.nextLine() ;int sum = 0 ;int j =1 ;char c ;for(int i = 0 ; i <= 10 ; i++) {
// - 的阻碍if(str.charAt(i) == '-') {
continue ; }sum += (str.charAt(i) - '0' ) * j++ ; //处理}if(sum%11 < 10) {
// 字符串 字符 因为后续需要拼接c = (char) (sum%11+'0') ; // 数字 + 48 再转换} else {
c = 'X' ;}if(str.charAt(12) == c) {
// 注意 - 也是字符串一员System.out.println("Right");} else {
String res = str.substring(0,12) + c ; System.out.println(res);}}}
关键分析
- For 循环(选择性)
for(int i = 0 ; i <= 10 ; i++) {
// - 的阻碍if(str.charAt(i) == '-') {
continue ; }sum += (str.charAt(i) - '0' ) * j++ ; //处理}
- 旧解 不使用循环
sum=(s.charAt(0)-'0')*1+(s.charAt(2)-'0')*2+(s.charAt(3)-'0')*3+(s.charAt(4)-'0')*4+(s.charAt(6)-'0')*5+(s.charAt(7)-'0')*6+(s.charAt(8)-'0')*7+(s.charAt(9)-'0')*8+(s.charAt(10)-'0')*9;
- 另设变量 j 解决 (i + 1) 连锁问题
sum += (str.charAt(i) - '0' ) * (i+1) ;sum += (str.charAt(i) - '0' ) * j++ ;