TJU1036
問題的關(guān)鍵是如何將這些滿足要求的數(shù)排序。
我們可以將數(shù)組下標(biāo)為0的元素設(shè)為1,并且將3個(gè)指針均放在它的位置上。以后,第i個(gè)指針乘以第i個(gè)數(shù)(i=1,2,3),取最小的放入數(shù)組,并且更新指針。這樣可以保證數(shù)組里的元素都是單調(diào)遞增而且不漏掉一個(gè)的。問題就解決了。
#include<iostream>
using?namespace?std;
const?long?k?=?100000;
long?num[k];
int?main()
{
????int?p[3],m,k[3],min,_;
????while(cin>>p[0]>>p[1]>>p[2]>>m)
????{
????????num[0]?=?1;
????????k[0]?=?k[1]?=?k[2]?=?0;
????????for(int?i=1;i<=m;i++)
????????{
????????????min?=?0;
????????????_?=?num[k[0]]?*?p[0];
????????????if(_?>?num[k[1]]?*?p[1]){_?=?num[k[1]]?*?p[1];?min?=?1;}
????????????if(_?>?num[k[2]]?*?p[2]){_?=?num[k[2]]?*?p[2];?min?=?2;}
????????????num[i]?=?_;
????????????for(int?j=0;j<3;j++)
????????????????while(_?>=?num[k[j]]?*?p[j])?k[j]++;
????????}
????????cout<<num[m]<<endl;
????}
????return?0;
}
我們可以將數(shù)組下標(biāo)為0的元素設(shè)為1,并且將3個(gè)指針均放在它的位置上。以后,第i個(gè)指針乘以第i個(gè)數(shù)(i=1,2,3),取最小的放入數(shù)組,并且更新指針。這樣可以保證數(shù)組里的元素都是單調(diào)遞增而且不漏掉一個(gè)的。問題就解決了。
#include<iostream>
using?namespace?std;
const?long?k?=?100000;
long?num[k];
int?main()
{
????int?p[3],m,k[3],min,_;
????while(cin>>p[0]>>p[1]>>p[2]>>m)
????{
????????num[0]?=?1;
????????k[0]?=?k[1]?=?k[2]?=?0;
????????for(int?i=1;i<=m;i++)
????????{
????????????min?=?0;
????????????_?=?num[k[0]]?*?p[0];
????????????if(_?>?num[k[1]]?*?p[1]){_?=?num[k[1]]?*?p[1];?min?=?1;}
????????????if(_?>?num[k[2]]?*?p[2]){_?=?num[k[2]]?*?p[2];?min?=?2;}
????????????num[i]?=?_;
????????????for(int?j=0;j<3;j++)
????????????????while(_?>=?num[k[j]]?*?p[j])?k[j]++;
????????}
????????cout<<num[m]<<endl;
????}
????return?0;
}
轉(zhuǎn)載于:https://www.cnblogs.com/FancyMouse/articles/263954.html
總結(jié)
- 上一篇: 阐述Linux操作系统之rpm五种基本操
- 下一篇: 常用面试题(对应的知识点)