九进制转十进制
代码:
#include <iostream>
using namespace std;
int main()
{
cout<<1*2+9*2+81*0+729*2<<endl;
return 0;
}
答案为:1478
顺子日期
这题与其想代码找顺子,不如自己枚举一下日期来得快。
以下为暴力思路:
2022 01 01 —— 2022 12 31
顺子可以是012、123。
但是不可以是234及以后
原因:2022 34 xx 没有34月,2022 23 4x没有23月,2022 x2 34没有34号
其他234以后的顺子也是一样枚举。
由此来先来枚举一下012:
2022 01 2x,此时我们可以知道x可以取0、1、2、3、4、5、6、7、8、9(10种)
2022 x0 12,此时我们可以知道x只能取1(1种)
再来枚举一下123:
2022 12 3x,此时我们可以知道x可以取0、1(2种)
2022 x1 23,此时我们可以知道x可以取0、1(2种)
答案:10+1+2+2=15(×)
仔细点发现2022 01 23和2022 01 23是一个日期,所以答案要减去1。
答案为14
刷题统计
本题注意一下,由于n的数据范围很大,直接写while循环会超时,所以得先计算一下需要几周,在计算还需要几天。
代码如下:
#include <iostream>
using namespace std;
typedef long long ll;
ll a,b,n,add,day;
int main()
{
cin>>a>>b>>n;
int tem=5*a+2*b;
ll week=n/tem;
ll last=n%tem;
day+=week*7;
int x=1;
while(last>0)
{
if(x%7==6||x%7==0)
last-=b;
else
last-=a;
day++;
x++;
}
cout<<day<<endl;
return 0;
}
修剪灌木
这题浅浅的模拟一下就找到规律了。
由于爱丽丝要么向左修剪,要么向右修剪。
怎么算当前这颗的最高值呢?就是计算再次回到这颗用的天数,就是长到最高的值。
当n=3时:
所以先向右再向左时长高:(n-i)*2;
先向左再向右时长高:(i-1)*2;
代码:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<max(i-1,n-i)*2<<endl;
}
return 0;
}