2016年江西理工大学第一轮模拟考试

第一题~这个就不用说了吧~拿计算器自己算一算,你就知道啦~

第二题~要知道连续的数字公约数只有两个~要么就是它本身(a==b),要么就是1

第三题~n*n-n+2 要推导过程可以看一下《组合数学》

第四题,如果嫌那种跨月的计算麻烦的话,我们统一换成从1年1月1号计算,然后计算天数之差,大于等于7的统统放一个结构体里,然后排序就好~

 1 struct P
 2 {
 3     int year;
 4     int month;
 5     int day;
 6     string s;
 7 } He[1000],HeHe[1000];
 8 bool cmd(P x,P y)
 9 {
10     if(x.year!=y.year)
11     {
12         return x.year<y.year;
13     }
14     else
15     {
16         if(x.month!=y.month)
17         {
18             return x.month<y.month;
19         }
20         else
21         {
22             if(x.day!=y.day)
23             {
24                 return x.day<y.day;
25             }
26         }
27     }
28 }

 

 第五题,学妹觉得()太完美,那么我们找出有多少组()就好了嘛~答案就是这个,因为()翻转一次就是不匹配的,不要担心()()翻转变成(()),我们))((不就得啦

然后就是我讲的栈喽~

 1 while(~scanf("%d",&n))
 2     {
 3         while(n--)
 4         {
 5            int i,j;
 6            int sum1=0;
 7            int sum2=0;
 8            stack<char> q;
 9            string ss;
10            cin>>ss;
11            for(i=0;i<ss.length();i++)
12            {
13               if(ss[i]=='(')
14               {
15                   q.push(ss[i]);
16               }
17               else if(ss[i]==')'&&!q.empty())
18               {
19                   sum1++;
20                   q.pop();
21               }
22            }
23 
24            cout<<sum1<<endl;
25         }
26     }

 

  第六题不得不说还有人用递归的,递归在其他地方没错,这里就明显傻逼了,每次递归我们都要算一次,耗时不说,我们没办法算出10^9的数据来~

可以在程序先算出第1~20个位置的数列来,然后我们在保存数组里调用就好了,哦,还有~第15个数之后结果都是1.61803~所以没必要全算出来~

const int N = 20;
int f[N];

int main(){
    f[0] = f[1] = 1;
    for (int i=2;i<N;++i){
        f[i] = f[i-1] + f[i-2];
    }
    int n;
    while (scanf("%d",&n)!=-1){
        if (n >= N) n = N-1;
        printf("%.5f\n",f[n-1]/(double)f[n-2]);
    }

 

  第七题很多人都会的,跳过

第八题,贪心,我们把最大的爱心加就好了,因为最少个数~幸好数据只有1000,冒泡也是可以的

bool cmp(int x,int y)
{
    return x>y;
}
int main()
{
    int n,max,m,i,j,sum;
    int a[100];    
    while(scanf("%d%d",&n,&max)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a,a+n,cmp);
        j=0;
        sum=0;
            for(i=0;i<n;i++)
        {
            sum+=a[i];
            j++;
            if(sum>=max)
            {
                break;
            }
        }
        printf("%d\n",j);
    }

 

  

 

posted @ 2016-04-25 19:37  樱花落舞  阅读(353)  评论(0编辑  收藏  举报