牛客网-2019年校招真题-通过率降序(二)
6.表达式求值
今天上课,老师教了小易怎么计算加法和乘法,乘法的优先级大于加法,但是如果一个运算加了括号,那么它的优先级是最高的。例如:
1+2*3=7 1*(2+3)=5 1*2*3=6 (1+2)*3=9
现在小易希望你帮他计算给定3个数a,b,c,在它们中间添加"+", "*", "(", ")"符号,能够获得的最大值。
输入描述:
一行三个数a,b,c (1 <= a, b, c <= 10)
输出描述:
能够获得的最大值
示例1
输入
1 2 3
输出
9
1 using System; 2 using System.Text; 3 using System.Text.RegularExpressions; 4 namespace AAAAA 5 { 6 class AA 7 { 8 public static void Main(string[] args) 9 { 10 string str = Console.ReadLine(); 11 string[] arr = Regex.Split(str, " "); 12 int[] shuZu=new int[3]; 13 int n = 0; 14 int sum = 0; 15 foreach (string str2 in arr) 16 { 17 shuZu[n]=Convert.ToInt32(str2); 18 n++; 19 } 20 int[] result=new int[6]; 21 result[0]=shuZu[0]+shuZu[1]+shuZu[2]; 22 result[1]=shuZu[0]*shuZu[1]*shuZu[2]; 23 result[2]=shuZu[0]*shuZu[1]+shuZu[2]; 24 result[3]=shuZu[0]+shuZu[1]*shuZu[2]; 25 result[4]=(shuZu[0]+shuZu[1])*shuZu[2]; 26 result[5]=shuZu[0]*(shuZu[1]+shuZu[2]); 27 Console.WriteLine(Math.Max(result[0],Math.Max(result[1],Math.Max(result[2],Math.Max(result[3],Math.Max(result[4],result[5])))))); 28 } 29 } 30 }
7.模数求和
现给定n个整数,并定义一个非负整数m,且令f(m) = (m%a1)+(m%a2)+...+(m%an)。
此处的X % Y的结果为X除以Y的余数。
现请你找出一个m,求出f(m)的最大值。
此处的X % Y的结果为X除以Y的余数。
现请你找出一个m,求出f(m)的最大值。
输入描述:
输入包含两行,第一行为一正整数n,(1<n<=3000)1
第二行为n个整数a
,a2
,...,an
,其中(2<=ai
<=10^5)
输出描述:
输出仅包含一行,输出f(m)的最大值
示例1
输入
3 3 4 6
输出
10
说明
就样例而言,当m取11时可取得最大值。
1 using System; 2 using System.Text; 3 using System.Text.RegularExpressions; 4 5 namespace WorkAttendance 6 { 7 class Attendance 8 { 9 public static void Main(string[] args) 10 { 11 int m = System.Convert.ToInt32(Console.ReadLine()); 12 string str = Console.ReadLine(); 13 string[] arr = Regex.Split(str, " "); 14 int n = 0; 15 int sum = 0; 16 foreach (string str2 in arr) 17 { 18 sum += Convert.ToInt32(str2) - 1; 19 n++; 20 } 21 Console.WriteLine(sum); 22 } 23 } 24 }
8.二进制中有多少个一
把一个32-bit整型转成二进制,其中包含多少个1,比如5的二进制表达是101,其中包含2个1
输入描述:
输入为整型(十进制),只需兼容32-bit即可,如5、32
输出描述:
输出为字符串,如“2”、“1”
示例1
输入
5
输出
2
说明
5的二进制是101,其中包含2个1
1 using System; 2 using System.Text; 3 namespace AAAAA 4 { 5 class AA 6 { 7 public static void Main(string[] args) 8 { 9 int a = Convert.ToInt32(Console.ReadLine()); 10 string str = Convert.ToString(a, 2); 11 int c = 0; 12 foreach (char ch in str) 13 { 14 if (ch == '1') 15 { 16 c++; 17 } 18 } 19 Console.WriteLine(c); 20 Console.ReadKey(); 21 } 22 } 23 }
9.
有一个无限长的数字序列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5。。。(数字序列从1开始递增,且数字k在该序列中正好出现k次),求第n项是多少
输入描述:
输入为一个整数n
输出描述:
输出一个整数,即第n项的值
示例1
输入
4
输出
3
1 public static void Main(string[] args) 2 { 3 int n = Convert.ToInt32(Console.ReadLine()); 4 int i=0; 5 for(;;i++) 6 { 7 if(n<=i*(i+1)/2&&n>(i-1)*i/2) 8 { 9 Console.WriteLine(i); 10 break; 11 } 12 } 13 }
10.