您的位置:首页 > 其它

20170329VMware在线笔试

2017-04-02 11:17 85 查看
设函数f(x)表示x!导0的个数,g(x)表示满足f(y)=x的最小值y。实现g(x),若不存在y返回-1.

eg:

输入1,返回5

输入2,返回10

输入3,返回15

输入4,返回20

输入5,返回-1

hint:设h(x,2)表示数字x中因子2的个数,h(x,5)表示数字x中因子5的个数,由于h(x,5)小于h(x,2),所以f(x)=h(x,10)=min(h(x,5),h(x,2))=h(x,5)。

#include <stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
int num;
int i=0,j=0,temp;
int ans;
int k=0;//表示5的个数

while(scanf("%d",&num)!=EOF){
k=0;
j=0;
while(k<num){
j=j+5;
temp=j;
while((temp/5)%5==0){
temp=temp/5;
//j=j/5;
k++;
}
k++;

//i=i+k;
}
if(k!=num)   j=-1;
printf("%d\n",j);
//else printf("-1\n");
}
return(0);

}


首先定义有效的括号序列:

对于长度为2的括号序列,有1种有效的括号序列:()

对于长度为4是括号序列,有2种有效的括号序列:(())、()()

….

输入示例:

2

1 2 3 4

4 3 2 1

输出示例:

8

第一行表示括号的对数,第二行为a1,a2,a3,a4…表示左括号的权值。

第三行为b1,b2,b3,b4…表示右括号的权值。输出为对应所有有效括号序列最大的权值和。在这个例子中()()对应的权值和1+3+3+1=8为最大的权值和。

有n个城市,城市间有n-1条公路相连,假设开始时所有城市都是相连的(直接或间接)。现在有一条公路需要维修(不确定是哪条),维修工小张拿到的维修费是这样计算的:如果去掉需要维修的公路,使得所有城市变成了两个连通分量,那么维修费为这两个连通分量内各自存在的道路条数之积,如果不能形成连通分量,那么维修费为0。求小张能拿到在最高维修费是多少。

输入示例:

2

6

1 2

2 3

2 4

4 5

4 6

6

1 2

1 3

1 4

1 5

1 6

输出

4

0

第一行为需要测试的用例组数,每组用例中的第一行为n,之后的n-1行表示相连的结点对。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  笔试题