題目描述
有一只小魚,它平日每天游泳?250?公里,周末休息(實行雙休日),假設從周?x?開始算起,過了?n?天以后,小魚一共累計游泳了多少公里呢?
輸入格式
輸入兩個正整數?x,n,表示從周?x?算起,經過?n?天。
輸出格式
輸出一個整數,表示小魚累計游泳了多少公里。
輸入輸出樣例
輸入 #1復制運行
3 10
輸出 #1復制運行
2000
說明/提示
數據保證,1≤x≤7,1≤n≤106。
解題思路:
首先這里給了當天是星期幾和游幾天,那么可以把游幾天的時間分為3個時間段分別為1.當天到這個星期天,2.剩余時間還有的整數個星期,3.最后的剩余時間不足一個星期。
例如3 ,10? 那么 第一部分為3~7,5天? ;第二部分為 (10-5)/7=0? ,則為0個星期;第三個部分為(10-5)-0*7=5天
下面是代碼價段
總體代碼 :
#include<bits/stdc++.h>
using namespace std;
int main(){long long a,b,c,d,sum=0;cin>>a>>b;c=8-a;b-=c;d=b/7;b=b%7;if(a<=5){sum+=(6-a)*250;}if(b<=5){sum+=b*250;}else{sum+=5*250;}sum+=d*5*250;cout<<sum;return 0;
}
優點:時間復雜度低
相比較直接一次循環,時間復雜度為o(n)這個算法時間復雜度大大變低。
比較代碼:(這個時間復雜度更大的多,一但n過大,可能會超時)
#include<bits/stdc++.h>
using namespace std;int main(){long long x,n,g=0;cin>>x>>n;for(int i=1;i<=n;i++){if(x!=6&&x!=7){g+=250;}x++;if(x>7) x=1;}cout<<g;return 0;
}