第一题2022转化成九进制。签到题,话不多说直接2*9^3+2*9+2=1478
第二题重在理解题意好吧。打开电脑日历或者自己手写可能的情况。答案为4
分别为(20220123 ,20221123,20221230,20221231);
第三题:与去年日期跑步题有点相似,相信掌握了去年日期跑步题这道题也不难,
直接上代码好吧。
1. #include<bits/stdc++.h> 2. using namespace std; 3. typedef long long ll; 4. int main() 5. { 6. ll day=0;//今天是礼拜几 7. ll cnt=0;//记录已刷题目 8. ll a,b;n; 9. ll s=0;//记录天数 10. cin>>a>>b>>n;//a为周一到周五所写题目,b为周末所写题目,n为总题目。 11. while(cnt<n) 12. { 13. day=(day+1)%7; 14. if(day>=1&&day<=5)cnt+=a; 15. else cnt+=b; 16. s++; 17. } 18. cout<<s; 19. return 0; 20. 21. }
第四题也不难,看出规律就行。经观察在第一颗或者最后一颗树=2*n-2;中间的树第i颗最高长为max((i-1)*2,(n-i)*2).题目结束,直接上代码。
1. #include<bits/stdc++.h> 2. using namespace std; 3. typedef long long ll; 4. int main() 5. { 6. ll n; 7. ll a[100005]; 8. cin>>n; 9. for(ll i;i<=n;i++) 10. { 11. ll c=(i-1)*2; 12. ll d=(n-i)*2; 13. if(i==1||i==n)a[i]=2*n-2; 14. else a[i]=max(c,d); 15. } 16. for(ll i=1;i<=n;i++) 17. { 18. cout<<a[i]<<endl; 19. } 20. return 0; 21. 22. }
第五题下面为x进制问题,刚拿题也有点懵,不过既然是进制所以往进制方面想如321(3为8进制,2为10进制,1为2进制)本位是由上一位进制而来所以3这个位是有2(10进制)进位而2这个位是由1(2进制)所以可以猜想结果位3这个位上的数结果为3*10*2=60,2这个位上的数大小为2*2,1这个位上就是1,所以结果为60+4+1=65;符合答案。再可以根据下面的例子实验看出看出这个想法是正确的。即可以公式化第n为大小为n*(n-1)*(n-2)...*1其中n指n位上的数值.其他如n-1是指n-1为上的进制大小,同理n-2,n-3....1也同n-1.最后将每个位这样计算再相加就可以得出答案。
代码略。。。今天不想写了。。。
有时间加补其他的。。。