洛谷 P2064 奇妙的汽車
阿新 • • 發佈:2018-06-30
play 它的 emp radius main 輸出格式 closed 至少 ++
P2064 奇妙的汽車
題目描述
你有著一輛奇妙的汽車,這輛汽車有著自動加速的功能。打個比方吧,第1天你駕駛著它可以行駛a路程,那麽第2天你可以讓它所走的路程增加到第1天的2~9倍(必須是其中一個整數),也就是2a~9a,第3天它所行駛的路程就將達到第2天的2~9倍……也就是說,這輛車在第i天所走的路程一定是第i-1天的2~9倍,而且還必須是它的整數倍。
現在你迫不及待地開著這輛車要從A城市出發到B城市旅遊,順便在路上展示一下這輛曠世奇車。你已經知道你需要行駛的裏程S,現在請你合理安排第1天的裏程和接下來每天需要增加路程的倍數,好讓你能夠在最短的天數內,恰好到達B城市。
不過,因為你想要好好展示一下你的車,而且也是為了交通安全,你被要求至少要花2天時間,如果不能找到這樣的方案請輸出-1。
輸入輸出格式
輸入格式:
一個正整數S,代表A城市到B城市的裏程。
輸出格式:
一個數,代表最少需要行駛的天數,如果無解輸出-1。
輸入輸出樣例
輸入樣例#1: 復制15121
輸出樣例#1: 復制
-1
輸入樣例#2: 復制
571
輸出樣例#2: 復制
5
說明
數據規模
對於30%數據,有S<=100;
對於70%數據,有S<=107;
對於100%數據,有9<S<=108。
#include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int s; struct nond{ int step,lon,v; }; queue<nond>que; int main(){ scanf("%d",&s); nond beg;beg.lon=1;beg.step=1;beg.v=1; que.push(beg);40分暴力while(!que.empty()){ nond now=que.front(); que.pop(); for(int i=2;i<=9;i++){ nond tmp; tmp.v=i*now.v; tmp.step=now.step+1; tmp.lon=now.lon+tmp.v; if(tmp.lon==s){ cout<<tmp.step; return 0; } if(tmp.lon+tmp.v*2<=s) que.push(tmp); } } cout<<"-1"; }
洛谷 P2064 奇妙的汽車