杭电计算机2011年硕士研究生笔试详解

时间:2022-10-27 14:59:14

题目一:

输入三个正整数A、B、C。判断这三个数能不能构成一个三角形。
思路:
根据三角形两边之和一定大于第三边这条定理来进行判断。
1、进行sort排序,然后把两条最短的边取出来
2、如果两条最短的边之和大于第三条边,那么就说明该图形一定满足两边之和大于第三边这个定理。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
int main(){
    int a[3];
    cin>>a[0]>>a[1]>>a[2];
    sort(a,a+3);
    if(a[0]+a[1]>a[2])//两条最小的边之和大于第三条边,保证了任意两条边之和大于第三边 
        cout<<"It is a triangle\n"<<endl;
    else
        cout<<"It is not a triangle\n"<<endl;
    return 0;
}

题目二:

有个人从2003年1月1日开始,三天打鱼两天晒网,请输入月份、日期,问在当年的某一天他是在打鱼还是在晒网。
思路:
对于有关日期处理的问题,一般都会涉及到对瑞年的判断,但是此题没有。我们用这个宏定义来帮助判断瑞年
#define ISYEAR(x) x%100!=0&&x%4==0||x%400==0 ?1:0

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; 
int main(){
    int d,m;
    int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    cin>>m>>d;
    int sum=0;
    for(int i=1;i<m;i++)
        sum+=month[i];//计算某月之前的天数 
    sum+=d-1;//计算距离某月一号的天数 
    if(sum%5<=2)
        cout<<"打鱼"<<endl; 
    else
        cout<<"晒网"<<endl;
    return 0;
} 

题目三:

丑数是这样定义的:如果一个正整数的素因子只包含 2、3、5、7四种,则它被称为丑数。以下数列 1, 2, 3,4, 5,6,7,8,9, 10,12,14,15,16,18, 20, 21,24,25, 27………. 就显示了前20个丑数。
给出一个正整数N,判断这个数是否为丑数。
思路:
1、定义一个模块儿,该模块儿对数据进行2,3,5,7取余,然后除以当前的数。
2、判断下上面的步骤得到的结果是否是1,是的话就返回true,否则返回false;

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
bool isugly(int num){
    while(num%7==0)
        num/=7;
    while(num%5==0)
        num/=5;
    while(num%3==0)
        num/=3;
    while(num%2==0)
        num/=2;
    if(num==1)
        return true;
    return false;
}
int main(){
    int num;
    while(cin>>num){
        if(isugly(num))
            cout<<"是丑数"<<endl;
        else
            cout<<"不是丑数"<<endl;
    }
    return 0;
}