笔试题总结6.14

港控/mmm° 2022-01-14 10:47 321阅读 0赞

1.序列找数

题目描述:从非负整数序列0,1,2,….,n中给出包含其中n个数的子序列,请找出未出现在该子序列中的那个数。
输入描述:输入为n+1个非负整数,用空格分开。
其中:首个数字为非负整数序列的最大值n,后面n个数字为子序列中包含的数字。
输出描述:输出为1个数字,即未出现在子序列中的那个数。
示例:
输入:
3 3 0 1
输出:
2

package org.buptdavid.datastructure.array;

import java.util.Scanner;

/**
* 序列找数
* Created by ZD on 2018/4/10.
*/
public class Main_Z1 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if (n >= 0){
StringBuilder b = new StringBuilder();
for (int i = 0; i < n; i++){
b.append(sc.nextInt());
}
findNoNumber(b.toString());
}
}

  1. /\*\*
  2. \* 找到未出现在该子序列中的数
  3. \* @param s
  4. \*/
  5. private static void findNoNumber(String s) \{
  6. if (s == null || s.length() == 0)
  7. return;
  8. for (int i = 0; i <= s.length(); i++)\{
  9. if (!s.contains(" "+i+" "))\{
  10. System.out.println(i);
  11. return;
  12. \}
  13. \}
  14. \}

}

2.小招喵跑步

题目描述:
小招喵喜欢在数轴上跑来跑去,假设它现在站在点n处,它只会3种走法,分别是:
1.数轴上向前走一步,即n=n+1;
2.数轴上向后走一步,即n=n-1;
3.数轴上使劲跳跃到当前点的两倍,即n=2*n
现在小招喵在原点,即n=0,它想去点x处,快帮小招喵算算最快的走法需要多少步?
输入描述:
小招喵想去的位置x
输出描述:
小招喵最少需要的步数
示例:
输入:
3
输出:
3

import java.util.Scanner;

/**
* 小招猫跑步
* Created by ZD on 2018/4/10.
*/
public class Main_Z2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
long x = sc.nextLong();//目的地
System.out.println(countQuickSteps(x));
}
}

  1. /\*\*
  2. \* 计算最快走法需要多少步
  3. \* @param x
  4. \*/
  5. private static long countQuickSteps(long x) \{
  6. if (x < 0)
  7. x = -x;
  8. long quickSteps;
  9. if (x == 0)
  10. return 0;
  11. if (x == 1)
  12. return 1;
  13. if (x == 2)
  14. return 2;
  15. if (x % 2 == 0)\{
  16. quickSteps = countQuickSteps(x/2) + 1;
  17. \}else \{
  18. quickSteps = countQuickSteps(x / 2) + 2;
  19. \}
  20. return quickSteps;
  21. \}

}

3.满足条件的数字

题目描述:
如果一个正整数,它的质因数只包含2,3,5,那么这个数满足条件。
同时,特别规定1也是满足条件的数字。
示例:前10个满足条件的数字是1,2,3,4,5,6,8,9,10,12
请编写一个函数,返回第n个满足条件的数
输入描述:
输入为n
输出描述:
输出为第n个满足条件的数
示例:
输入:
5
输出:
5

package org.buptdavid.datastructure.array;

import java.util.Scanner;

/**
* Created by ZD on 2018/4/10.
*/
public class Main_Z3 {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
countN(n);
}

  1. \}
  2. /\*\*
  3. \* 打印出第n个满足条件的数
  4. \* @param n
  5. \*/
  6. private static void countN(int n) \{
  7. if (n <= 0)
  8. return;
  9. int count = 1;
  10. int number = 1;
  11. while (count < n)\{
  12. number++;
  13. int temp = number;
  14. boolean flag1 = true;
  15. while (temp != 1 && flag1) \{
  16. if (temp % 2 == 0) \{
  17. temp = temp / 2;
  18. flag1 = true;
  19. continue;
  20. \}else \{
  21. flag1 = false;
  22. \}
  23. if (temp % 3 == 0) \{
  24. temp = temp / 3;
  25. flag1 = true;
  26. continue;
  27. \}else \{
  28. flag1 = false;
  29. \}
  30. if (temp % 5 == 0) \{
  31. temp = temp / 5;
  32. flag1 = true;
  33. continue;
  34. \}else \{
  35. flag1 = false;
  36. \}
  37. \}
  38. if (temp == 1)
  39. count++;
  40. \}
  41. System.out.println(number);
  42. \}
  43. \}

作者:Violet-Zhao
来源:CSDN
原文:https://blog.csdn.net/Demodan/article/details/79888460
版权声明:本文为博主原创文章,转载请附上博文链接!

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 1

import java.util.*;

public class Main {

  1. public static void main(String\[\] args)\{
  2. Scanner sc=new Scanner(System.in);
  3. while (sc.hasNext())\{
  4. List<Integer> stoma=new ArrayList<>();
  5. List<Integer> bag=new ArrayList<>();
  6. String tmp1=sc.nextLine();
  7. String\[\] tmp11=tmp1.split(" ");
  8. for (int i=0;i<tmp11.length;i++)
  9. stoma.add(Integer.parseInt(tmp11\[i\]));
  10. String tmp2=sc.nextLine();
  11. String\[\] tmp22=tmp2.split(" ");
  12. for (int i=0;i<tmp22.length;i++)
  13. bag.add(Integer.parseInt(tmp22\[i\]));
  14. Collections.sort(stoma);
  15. Collections.sort(bag);
  16. int res=0;
  17. boolean flag=false;
  18. for (int i=0;i<stoma.size();i++)\{
  19. int tmp=stoma.get(i);
  20. flag=false;
  21. for (int j=bag.size()-1;j>=0;j--)\{
  22. if (bag.get(j)>=tmp)\{
  23. flag=true;
  24. bag.remove(j);
  25. break;
  26. \}
  27. if (bag.get(j)<tmp)
  28. break;
  29. \}
  30. if (flag)
  31. res++;
  32. \}
  33. System.out.println(res);
  34. \}
  35. \}

}

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 2

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 3

/**
* Created by dcp on 2018/9/16.
*/
/**
* Created by dcp on 2018/9/16.
*/
/**
* Created by dcp on 2018/09/16.
*/
var readline=require(“readline”);
var r1=readline.createInterface({
input:process.stdin,
output:process.stdout
});

r1.on(“line”,function(data){

  1. console.log(jumpFloor(data))

});
function jumpFloor(number)
{
// write code here
if(number==0){
return 0;
}
if(number==1){
return 1;
}
if(number==2){
return 2;
}
var a=1,b=2,temp=0;
for(var i=3;i<=number;i++){
temp=a+b;
a=b;
b=temp;
}
return temp;

}

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 4

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljeTA3MDY_size_16_color_FFFFFF_t_70 5

import java.util.Scanner;

public class Main {

  1. public static String res="";
  2. public static void main(String\[\] args)\{
  3. Scanner sc=new Scanner(System.in);
  4. while (sc.hasNext())\{
  5. int N=sc.nextInt();
  6. int count=0;
  7. for (int i=1;i<=N;i++)\{
  8. if (goodNumber(i))\{
  9. int now=Integer.valueOf(res);
  10. if (now!=i)\{
  11. count++;
  12. \}
  13. \}
  14. \}
  15. System.out.println(count);
  16. \}
  17. \}
  18. private static boolean goodNumber(int n)\{
  19. String a=String.valueOf(n);
  20. res="";
  21. for (int i=0;i<a.length();i++)\{
  22. if (a.charAt(i)=='0'||a.charAt(i)=='1'||a.charAt(i)=='8')\{
  23. res+=a.charAt(i);
  24. \}else if (a.charAt(i)=='2')\{
  25. res+="5";
  26. \}else if (a.charAt(i)=='5')\{
  27. res+="2";
  28. \}else if (a.charAt(i)=='6')\{
  29. res+="9";
  30. \}else if (a.charAt(i)=='9')\{
  31. res+="6";
  32. \}else return false;
  33. \}
  34. return true;
  35. \}

}

题目大意:一排人站成一队,共有n个人,每个人有各自的身高,用一个数组表示。然后AB两个人参与游戏,每次可以从队伍最左侧选择一个或者两个人加入自己的队列,最后将两人的队列的人的身高总和进行比较,总和大的人获得胜利,A先手,且A和B每个人都足够机智(每手都是最优),求A是否可以必胜。

首先这题只是看上去像个博弈,但是由于每个人的身高不同(题目并没有给出身高范围,理论上可以出现一个人顶其它人总和的情况),所以博弈很难解决。

由于两人都是足够机智的,所以可以用dp[i]表示从位置i取可以获得的最大值(A和B都可以表示),而队伍末尾的值可以确定,即dp[n]=n;所以可以从最后进行反推,状态转移方程为:

dp[i]=max(a[i]+sum[n]-sum[i]-dp[i+1],a[i]+a[i+1]+sum[n]-sum[i+1]-dp[i+2]);

(sum[i]表示队列从1到i的身高总和)

#include
#include
#include
#include
using namespace std;
int main(){
int n;
int a[10000];
int dp[10000];
int sum[10000];
scanf(“%d”,&n);
memset(dp,0,sizeof(dp));
memset(sum,0,sizeof(sum));
for(int i=1;i<=n;i++){
scanf(“%d”,&a[i]);
sum[i] = sum[i-1]+a[i];
}
dp[n]=n;
for(int i=n-1;i>=1;i—){
dp[i]=max(a[i]+sum[n]-sum[i]-dp[i+1],a[i]+a[i+1]+sum[n]-sum[i+1]-dp[i+2]);
}
if(dp[1]>dp[2]||dp[1]>dp[3]){
puts(“true”);
}
else{
puts(“false”);
}
return 0;
}
-——————————
作者:丶聂小白
来源:CSDN
原文:https://blog.csdn.net/q295657451/article/details/77980495
版权声明:本文为博主原创文章,转载请附上博文链接!

某公司年会上,组织人员安排了一个小游戏来调节气氛。游戏规则如下:

N个人参与游戏,站成一排来抢工作人抛来的M个小玩偶。为了增加游戏的趣味和难度,规则规定,参与游戏的人抢到的礼物不能比左右两边的人多两个或以上,否则会受到一定的惩罚。游戏结束时拥有玩偶最多的人将获得一份大奖。

假设大家都想赢得这份大奖,请问站在第K个位置的小招在赢得游戏时,最多能拥有几个玩偶?

解答:

  1. ![70][]

https://www.nowcoder.com/questionTerminal/1bca71cd733048f890d36724f3c695eb?orderByHotValue=1&page=1&onlyReference=false
来源:牛客网

位置k的小朋友领p颗糖果,理想情况下越靠边的人比k位置的小朋友少一颗糖,正好领完m颗糖,即曲线阴影部分为m,加上直线阴影部分的糖果数s=((n - k + 1)(n - k) /2) + (k (k - 1) /2)等于n*p,即长方形的面积。
如果多出来i颗糖果的话,显然只需要考虑i小于n了,否则每个人就能多发一颗糖果还能有剩。这i颗糖果已经不能发给k位置的小朋友了,只能从边上开始发,一人一颗。那反过来求得的p就是代码中的 (m + s - i) / n。

代码:

#include using namespace std;

int main()

{

  1. int n, m, k;
  2. cin >> n >> m >> k;
  3. if (n && (k>=1 && k<=n))
  4. \{
  5. int s = ((n - k + 1)\*(n - k) >> 1) + (k \* (k - 1) >> 1); //\*、+优先级大于>>
  6. for (int i = 0; i < n; i++)
  7. \{
  8. if ((m + s - i) % n == 0)
  9. \{
  10. cout << (m + s - i) / n << '\\n'; break;
  11. \}
  12. \}
  13. \}
  14. else cout << "0" << '\\n';
  15. return 0;

}

发表评论

表情:
评论列表 (有 0 条评论,321人围观)

还没有评论,来说两句吧...

相关阅读

    相关 试题总结0001

    1)输出当前源文件的文件名以及源文件的当前行号? 解答: ANSI C标准预定义宏: 1)\_\_LINE\_\_:在源文件中插入当前源代码行号; 2)\_\_FILE

    相关 试题总结0000

    1.选一个正确的(A)(此题答案不知道是不是正确的,希望各位指正) > A静态链接库不能有同名全局函数 > B动态链接库不能有同名全局函数 > C两个静态链

    相关 Java基础常见试题总结

    以下是自己总结的一些Java常见的基础知识题,答案仅供参考,如有异议请指出。一直保持更新状态。 1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

    相关 试题总结0003

    1.哪些运算符不能重载? 重载操作符的限制:   8.1 并不是所有的操作符都能被重载。除了. ,.\ ,:: ,? : ,sizeof,typeid这几个运算符不能被

    相关 试题总结6.14

    1.序列找数 题目描述:从非负整数序列0,1,2,….,n中给出包含其中n个数的子序列,请找出未出现在该子序列中的那个数。 输入描述:输入为n+1个非负整数,用空格分开。