#include
#include
using namespace std;
int main()
{
string str;
cin>>str;
string cf="CODEFORCES";
int len=str.length();
int flag=0;
for(int i=0;i
B题 求给定数字能否写成只由1或0组成的数字串的和。如32=11+11+10;9=1+1+1+1+1+1+1+1+1。没想那么多。就是,枚举数字每一位,看每一位是否大于一,大于一就减一并且在答案中给添上一,是零就添零。很暴力的解法,要用到
#include
#include
#include
using namespace std;
int main()
{
string str;
cin>>str;
int len=str.length();
int n=0;
int ans[10];
while(atoi(str.c_str())!=0)
{
string tmp;
for(int i=0;i
C题 是个有趣的数学问题,贪心可做。给出长度为n的一段区间,告诉其中m个点的高度。并且相邻两点的高度差不大于一,求满足条件的最大高度。
贪心体现在将问题划为三个区间,第一个给定点之前,最后一个给定点之后,以及给定点区间。第一个和最后一个都好求,在求中间区间时,画出图形就会发现满足条件的点其高度满足x=(d-pred-abs(preh-h))+max(preh,h);其实也不是很困难。
#include
#include
#include
using namespace std;
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int d,h;
scanf("%d%d",&d,&h);
m=m-1;
int ans=h+d-1;
int flag=1;
while(m--)
{
//cout<
<