hdu:手机短号

手机短号
Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 57 Accepted Submission(s) : 32

Font: Times New Roman | Verdana | Georgia
Font Size: ← →

Problem Description
大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是 6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。
现在,如果给你一个11位长的手机号码,你能找出对应的短号吗?
Input
输入数据的第一行是一个N(N <= 200),表示有N个数据,接下来的N行每一行为一个11位的手机号码。
Output
输出应包括N行,每行包括一个对应的短号,输出应与输入的顺序一致。
Sample Input
2
13512345678
13787654321
Sample Output
645678
654321
Source
2006/1/15 ACM程序设计期末考试


int类型最大值是Integer.MAX_VALUE = 21 4748 3647

所以使用long型

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
//		System.out.println(Integer.MAX_VALUE);//21 4748 3647
		Scanner sc= new Scanner(System.in);
		int n = sc.nextInt();
		while(n-->0){
			long number = sc.nextLong();
			long five = number % 100000;
			System.out.println(600000 + five);
		}
		sc.close();
	}
}

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		for(int i = 0;i<N;i++) {
			String str = sc.next();
			String arr[] = str.split("");
			System.out.println("6" + arr[6] + arr[7] + arr[8] + arr[9] + arr[10]);
		}
		sc.close();
	}

}

#include<stdio.h>
int main()
{
    int i, n;char g[100];
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
            break;
        for(i=0;i<n;i++)
        {
            scanf("%s",g);
            printf("6%c%c%c%c%c\n",g[6],g[7],g[8],g[9],g[10]);
        }
    }
    return 0;
}

scanf()函数中,可用%md指定读取位数,我们可以只读取需要的,其余的不用理会。 如果在 % 后有一个 " * " 号,这是一个附加说明符,表示读取时跳过它指定的列数。 例如%*6d%4d%2d%2d 表示读入6位整数但不赋值给任何变量。然后再读入4位整数、2位整数,2位整数,最后读取结束。
#include<cstdio> 
int main()  
{
    int a,n,i;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%*6d%5d",&a);
        printf("6%05d",a);
        printf("\n");
    }
	return 0;
}

如果在 % 后有一个 " * "号,这是一个附加说明符,表示读取时跳过它指定的列数。
#include<stdio.h> 
int main() {  
 	int a,n;   
    scanf("%d",&n);   
 	while(n--)   {     
 	scanf("%*6d%d",&a);     
    printf("6%05d\n",a);   
 	}   
 	return 0; 
}  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值