搜狐AC代码
第一题直接按题意分析即可:
题目比较晕,需要慢慢读。
#include <iostream>
#include <vector>
using namespace std ;
int main(){
int n , m ;
while(cin >> n >> m){
vector<int> arr(m , 0) ;
for(int i = 0 ; i < m ; i++){
cin >> arr[i] ;
}
vector<int> ans ;
int end = 0 ;
int sta = 0 ;
for(int i = 0 ; i < m ; i++){
if(arr[i] != 1){
for(int j = 0 ; j < arr[i] ; j++){
ans.push_back(arr[i]) ;
}
end = i + 1 ; //m的起始下标
sta = i + 1 ; //ans的起始下标
break ;
}
else{
ans.push_back(1) ;
}
}
int num = ans.size() ;
while(num <= n){
end = end % m ;
int len = ans[sta] ;
for(int i = 0 ; i < len ; i++){
ans.push_back(arr[end]) ;
}
sta ++ ;
end ++ ;
num = ans.size() ;
}
for(int i = 0 ; i < n ; i++){
cout << ans[i] << endl ;
}
}
return 0;
}
第二题使用贪心即可AC100% , 我没保存AC代码,抱歉。