1. 程式人生 > >周練5

周練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 重排連結串列