小小度刷礼品——解题报告
来源:互联网 发布:js中的while死循环 编辑:程序博客网 时间:2024/05/01 13:27
描述:一年一度的百度之星又开始了,这次参赛人数创下了吉尼斯世界纪录,于是百度之星决定奖励一部分人:所有资格赛提交ID以x结尾的参赛选手将得到精美礼品一份。
小小度同学非常想得到这份礼品,于是他就连续狂交了很多次,提交ID从a连续到b,他想问问你他能得到多少份礼品,你能帮帮他吗?
输入
第一行一个正整数T表示数据组数;
接下去T行,每行三个正整数x,a,b (0 <=x <= 1018, 1 <= a,b <= 1018,a <= b)
输出
T行,每行为对应的数据情况下,小小度得到的礼品数
样例输入
1
88888 88888 88888
样例输出
1
解题报告:
两种方法解的,第二种方法更优。
第一种方法,回溯,具体看代码:
/* * 题目描述一年一度的百度之星又开始了,这次参赛人数创下了吉尼斯世界纪录,于是百度之星决定奖励一部分人:所有资格赛提交ID以x结尾的参赛选手将得到精美礼品一份。小小度同学非常想得到这份礼品,于是他就连续提交了很多次,提交ID从a连续到b,他想问问你他能得到多少份礼品,你能帮帮他吗?输入描述第一行一个正整数T表示数据组数;接下去T行,每行三个正整数x,a,b(0<=x<=1018,1<=a,b<=1018,a<=b)输出描述T行,每行为对应的数据情况下,小小度得到的礼品数输入样例1888888888888888输出样例1 */import java.util.Scanner;public class N25Gift {int count;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int t = sc.nextInt();int[][] a = new int[t][3];for(int i=0;i<t;i++){for(int j=0;j<3;j++){a[i][j]=sc.nextInt();}}for(int i=0;i<t;i++){N25Gift gif = new N25Gift();gif.Calculate(a[i],"");System.out.println(gif.count);}}private void Calculate(int[] b,String result) {//递归各种情况if(ReOk(result,b)==1){count++;}else if(ReOk(result,b)==-1){return;}for(int i=0;i<=9;i++){String temp=result;result+=i;Calculate(b,result);result=temp;}}private int ReOk(String result, int[] c) {//与结尾数字构成组合数字,判断是否满足要求result+=c[0];if(result.charAt(0)=='0'||Integer.parseInt(result)>c[2]){return -1;}else if(Integer.parseInt(result)>=c[1]&&Integer.parseInt(result)<=c[2]){return 1;}else{return 0;}}}
第二种方法:
import java.util.Scanner;public class N25Gift2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int T = sc.nextInt();while(T--!=0){int x = sc.nextInt();int a = sc.nextInt();int b = sc.nextInt();int len_x = new String(""+x).length();if(a<x){a=x;}int count=0;int mid = fun(len_x);for(int i=a;i<=b;i++){if((0==(i-x)%mid)){count++;}}System.out.println(count);}}private static int fun(int n) {int sum=1;while(n-->0){sum*=10;}return sum;}}
- 小小度刷礼品——解题报告
- B:小小度刷礼品
- 百度之星-初赛-小小度刷礼品
- 【2012百度之星/初赛上】小小度刷礼品
- 2012百度之星初赛第一场题B小小度刷礼品
- 【2012百度之星/初赛上】B:小小度刷礼品
- 百度之星2012初赛Day1 B - 小小度刷礼品
- 迷宫—解题报告
- 分数——解题报告
- 快乐——解题报告
- 带分数——解题报告
- 解题报告——poj3006
- 人人网——礼品商城
- vijos1049——送给圣诞夜的礼品
- 二项堆运用——hdu1512解题报告
- 最小生成树——解题报告
- 简单字符串比较 ——解题报告
- 骨牌铺方格 ——解题报告
- 使用Simple-Spring-Memcached的demo示例
- win7 系统英文版转化为可安装中文软件版本
- 模拟简单进程调度实验
- 骑行
- Shared library "Hello World!" for Android
- 小小度刷礼品——解题报告
- 计算行程 计算了小明一共骑行了多远(单位:公里)。其中d表示小明自行车轮子的直径(单位:米)。
- 使用Simple-Spring-Memcached注解做缓存操作
- 嵌入式Linux启动过程中的问题积累
- Chinese checkers 跳棋(广搜)
- CString.Format的详细用法(转)
- 最近有些忙,不是忙于钻研技术
- 使用SqlConfigDataSource实现ODBC数据源配置
- 双色点阵显示0——F