文档文本内容
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水
瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,
喝掉3 瓶满的,喝完以后4 个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩 2 个空
瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用 3 个空瓶子换一瓶满
的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
1 /*
2 递归问题
3 3个瓶子换 1瓶水+1个空瓶子,两个瓶子换 1瓶水+0个空瓶子,1个瓶子换0瓶水。
4 f(1) = 0
5 f(2) = 1
6 f(3) = 1
7 f(4) = f(2)+1 //4个瓶子,其中 3个可以换1瓶水+1个空瓶,所以是f(2)+1
8 f(5) = f(3)+1 //3个瓶子换 1瓶水+1个空瓶,所以是 f(3)+1
9 ...
10 f(n) = f(n-2)+1 */
11 #include <iostream>
12
13 using namespace std;
14
15 int f(int n)
16 {
17 if(n==1) return 0;
18 if(n==2) return 1;
19 return f(n-2)+1;
20 }
21
22 int main()
23 {
24 int n;
25 while(cin >> n){
26 if(n==0)
27 break;
28 cout<<f(n)<<endl;
29 }
30 return 0;
31 }
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了
N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余
相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排
好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组
Return Value
OutputArray 输出处理后的随机整数
注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。
1 import java.util.Scanner;
2 import java.util.TreeSet;
3
4 public class Main
5 {
6 public static void main(String[] args) {
7 Scanner sc=new Scanner(System.in);
8 while(sc.hasNext()){
9
10 TreeSet<Integer> set=new TreeSet<Integer>();
11 int n=sc.nextInt();
12 if(n>0){
13 for(int i=0;i<n;i++){
14 set.add(sc.nextInt());
15 }
16 }
17 for(Integer i:set){
18 System.out.println(i);
19 }
20 }
21 }
22 }
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时
输入 )
这道题用Java自带的函数转换也,当然自己写也行,代码如下:
自带函数转换: import java.util.*;
/**
*Created by 华夏紫云 on 2015/11/23.
*/public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
String str=sc.next().substring(2);
System.out.println(Integer.parseInt(str,16));
}
}
}
自己实现转换:
import java.util.*;
/**
*Created by 华夏紫云 on 2015/11/23.
*/
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
StringBuffer sb=new StringBuffer();
sb.append(sc.next());
//String str=sc.next();
String str=sb.reverse().substring(0,sb.length()-2);
char ch[]=str.toCharArray();
int sum=0;
for(int i=0;i<ch.length;i++){
if(ch[i]>='A'&&ch[i]<='F'){
sum+=(Integer.valueOf(ch[i])-55)*Math.pow(16,i);
}else {
sum+=(Integer.valueOf(ch[i])-48)*Math.pow(16,i);
}
}
System.out.println(sum);
// System.out.println(Integer.valueOf('6'));}
}
}