1.汽水瓶
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
输入描述:
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
//通过数学分析,最后获得的饮料数是总空瓶数整除2 。
while(line=readline()){
console.log(parseInt(line/2))
}
2.简单密码
密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,
声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
function simple_pwd(str11){
var res=[]
for(var i=0;i='0'&&str11[i]<='9'){
res[i]=str11[i];
continue;
}
//处理大写字母
else if(str11[i]>='A'&&str11[i]<='Z'){
var t=str11[i].toLowerCase();
if(t=='z'){
res[i]='a';
}else{
res[i]=String.fromCharCode(t.charCodeAt()+1);
}
continue;
}
//处理小写字母
else if(str11[i]>='a'&&str11[i]<='c'){
res[i]='2';
continue;
}else if(str11[i]>='d'&&str11[i]<='f'){
res[i]='3';
continue;
}else if(str11[i]>='g'&&str11[i]<='i'){
res[i]='4';
continue;
}else if(str11[i]>='j'&&str11[i]<='l'){
res[i]='5';
continue;
}else if(str11[i]>='m'&&str11[i]<='o'){
res[i]='6';
continue;
}else if(str11[i]>='p'&&str11[i]<='s'){
res[i]='7';
continue;
}else if(str11[i]>='t'&&str11[i]<='v'){
res[i]='8';
continue;
}else if(str11[i]>='w'&&str11[i]<='z'){
res[i]='9';
continue;
}
}
return res.join("");
}
var line;
while(line=readline()){
var str=line;
var res=simple_pwd(str);
console.log(res);
}
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
注意每个输入文件有多组输入,即多个字符串用回车隔开
function deletString(str2){
arr2=str2.split('');
//reduce求出每个字符对应的个数
var result=arr2.reduce(function(allString,name){
if(name in allString){
allString[name]++;
}
else{
allString[name]=1;
}
return allString;
},{});
//排序取最小值
var arr=Object.keys(result).sort(function(v1,v2){
return result[v1]-result[v2]
})
//将满足条件的最小字符放入一个数组
var arr3=[]
var min=result[arr[0]]
for(var i=0;i
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)
while(line=readline()){
var t=line.split('')
//对字母按照规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
//规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
var arr=line.match(/[a-zA-Z]/g);
for(i=0;iarr[j+1].toUpperCase()){
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
//规则 3 :非英文字母的其它字符保持原来的位置。
var count=-1;
var result=t.map(function(item){
if(/[a-zA-Z]/.test(item)){
count++;
return arr[count];
}else{
return item;
}
})
console.log(result.join(''));
}
信号测量的结果包括测量编号和测量值。存在信号测量结果丢弃及测量结果重复的情况。
1.测量编号不连续的情况,认为是测量结果丢弃。对应测量结果丢弃的情况,需要进行插值操作以更准确的评估信号。
采用简化的一阶插值方法,由丢失的测量结果两头的测量值算出两者中间的丢失值。
假设第M个测量结果的测量值为A,第N个测量结果的测量值为B。则需要进行(N-M-1)个测量结果的插值处理。进行一阶线性插值估计的第N+i个测量结果的测量值为A+( (B-A)/(N-M) )*i (注:N的编号比M大。)
例如:只有测量编号为4的测量结果和测量编号为7的测量结果,测量值分别为4和10
则需要补充测量编号为5和6的测量结果。
其中测量编号为5的测量值=4 + ((10-4)/(7-4))*1 = 6
其中测量编号为6的测量值=4 + ((10-4)/(7-4))*2 = 8
2.测量编号相同,则认为测量结果重复,需要对丢弃后来出现的测量结果。
请根据以上规则进行测量结果的整理。
详细描述:
接口说明
原型:
intCleanUpMeasureInfo(MEASURE_INFO_STRUCT* pOriMeasureInfo,intnOriMINum,intnMaxMIRst, MEASURE_INFO_STRUCT* pMeasureInfoRst);
输入参数:
MEASURE_INFO_STRUCT* pOriMeasureInfo: 原始测量结果内容,以结构数组方式存放。测量编号已经按升序排列。MEASURE_INFO_STRUCT定义包含编号和测量值,见OJ.h
int nOriMINum: 原始测量结果个数。
int nMaxMIRst: 整理的测量结果最大个数。
输入参数:
MEASURE_INFO_STRUCT* pMeasureInfoRst: 整理的测量结果
返回值:
Int
整理的测量结果个数
import java.util.Scanner;
import java.util.ArrayList;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int m=sc.nextInt();
//二维数组存储键值对
int[][] data=new int[n][2];
for(int i=0;i list=new ArrayList();
//若出现重复值,利用这两个变量存储前一个值,丢弃后出现的重复值(如题目要求)
int KEY=data[0][0];
int VALUE=data[0][1];
list.add(KEY+" "+VALUE);
for(int i=1;i<=n-1;i++){
int diff=data[i][0]-KEY-1;
if(diff>0){
for(int j=1;j<=diff;j++){
int key=KEY+j;
int value=VALUE+(data[i][1]-VALUE)/(data[i][0]-KEY)*j;
list.add(key+" "+value);
}
list.add(data[i][0]+" "+data[i][1]);
KEY=data[i][0];
VALUE=data[i][1];
//两个键相等则直接跳过,此时KEY,VVALUE保存的还是上一个值
}else if(diff==-1)
continue;
else{
list.add(data[i][0]+" "+data[i][1]);
KEY=data[i][0];
VALUE=data[i][1];
}
}
for(String s:list)
System.out.println(s);
}
}
}
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
while(str = readline()){
var arrNums = str.split(".");
var res = "YES";
for(var i=0;i255 || arrNums[i]<0) {
res = "NO";
break;
}
}
console.log(res);
}