NEUQ-ACM-招新赛四五题

7-4 疯狂星期四

 思路1:蔡勒公式法(详见百度百科)

#include <iostream>
using namespace std;
int main()
{
	int m,d,y;cin>>m>>d>>y;
	if(m==1){
		m=13;
		y--; 
	}
	if(m==2){
		m=14;
		y--;
	}
	int w= (d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
	cout<<(w+1)%7; 
 return 0;
}

思路2:求两天差了多久用正负数表示:

但取模时需要注意:

(2 + x) % 7 在x < -2的时候可能会得到负数

((2 + x) % 7 + 7) % 7 避免了负数情况的出现

7-5 排列

 思路:

主要就是考虑问题的角度问题~

1. 如果一次操作的区间里没有n,那这次操作一定是无意义的。

2. 最优的情况肯定是每次操作区间里只有1个n,然后每次将k-1个数转换为n。

其实就是:总共有n-1个不为n的数,每次可以转换k-1个数为n。

所以是大于(n-1)/(k-1)的最小整数。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值