周练5

7-43 阅览室

很快打完  进步了  还有就是读懂题意  之前混淆了弄了很久

#include<iostream>
#include<cstring>
#include <bits/stdc++.h>
using namespace std;



int main(){

  int n;cin>>n;
  for(int i=1;i<=n;i++)
  {
      int a[1000][2]={0};int sum=0;int ren=0;
      for(;;)
      {
          int num,time1,time2;
          char f;
          cin>>num>>f;
          scanf("%d:%d",&time1,&time2);
          int time=time1*60+time2;
          if(num==0)break;

          if(f=='S'){a[num][1]=1;a[num][0]=time;}
          if(f=='E'&&a[num][1]==1) {ren++;sum+=time-a[num][0];a[num][1]=0;}



      }
       if(sum%2==1)sum++;
      if(ren)printf("%d %d\n",ren,(sum)/ren);
      else printf("0 0\n");

  }



    return 0;
}
View Code

7-45 整除光棍

一开始模拟  位数不够  后来两个点过不了

#include<iostream>
#include<cstring>
#include <bits/stdc++.h>
using namespace std;



int main(){

  int x;cin>>x;
  int n=0;int ans=0;

  while(1)
  {
      ans=ans*10+1;n++;
      if(ans>=x){ans%=x;}
      if(ans%x==0)break;

  }
    unsigned long long t=1;
     for(int i=1;i<n;i++)
        t=t*10+1;
      printf("%lld %d",t/x,n);






    return 0;
}
View Code

然后边模拟边打印  

虽然模拟的不太熟练    多打几次  输出整除  求余继续  一开始不能有0; 

#include<iostream>
#include<cstring>
#include <bits/stdc++.h>
using namespace std;



int main(){

  int x;cin>>x;
  int n=0;int ans=0;
   int key;
  int first=0;
  while(1)
  {
      ans=ans*10+1;n++;
      
      if(ans>=x){first=1;printf("%d",ans/x);ans%=x;}
      else if(first)printf("0");

      if(ans==0){break;}

  }

printf(" %d",n);









    return 0;
}
View Code

点赞狂魔

用set很简单


7-50 重排链表

猜你喜欢

转载自www.cnblogs.com/bxd123/p/10193388.html
2-5