CodeForces - 939 A B签到题特训(...

本文解析了CodeForces平台上的2A2B签到题,包括问题理解、算法实现及代码优化等内容,特别关注了数据类型、输入输出格式、循环优化等细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



CF  2A2B的签到题 我..


****注意一下有时候  等于号/%d  &x这种的
****scanf很麻烦的阿!
 scanf("%lld%lld",&num,&n);
 scanf("%lld",&box[i]);
****typedef long long ll; 


连着三道签到题
1 love triangle
https://cn.vjudge.net/problem/CodeForces-939A
**注意是三个,绕成圈儿的啊,绕成圈儿的
**最开始没思路..  本来是打算用下标做的 ,对应起来很麻烦
但是     想一下其实这题指向很简单,只要找到一组就可以退出了
而且一组只要三个就好,不复杂
那么想到怎么去表示,是cnt[i]啊,然后cnt[cnt[i]],最后到了cnt[cnt[cnt[i]]],也没什么障碍就这样了


2 ooxx 没什么坎儿.. 
 


3 母牛公牛(????
 https://cn.vjudge.net/problem/CodeForces-939B
 
(1)、 
想法其实不复杂  但是误解了有一些东西  
***if there are many 
***print any of them 
这个是随便打一组就好 啊!
结果我想的好多  要全部打印出来
如果是全部打印的话 怎么不跟你要顺序和按照什么排列呢
哪怕是少了这么点   处处不是PE就TLE这么严格怎么可能顺序都不管你
 
这里浪费了时间...  白白写了个栈处心积虑,后来还是清空了
而且.. 好低效
好低效的代码又写那么长  
"只是实现了  仅此而已 还差得远"


(2)、 


此后开始不断的超时


 
**** num % (box[i]) 能简则简
最后的最后超时竟然.. 多判定了一次 num % (box[i])>=1....
整除诶  28%30 似乎没有影响 ,这一点就超时了= =
= =毕竟这个数据量很大吧/ 






(3)、
1 数据量很大!什么意思呢 
1e18是10的十八次方.. 
2 数据量很大!什么意思呢
// record = num % (box[i]);
这个其实完全没必要用record存一次....节约开始(不
3 数据量很大!什么意思呢
printf打空格很方便!直接%lld %lld就好了
以及只要scanf("%lld",&box[i])即可 
4 typedef long long ll;(#define  后面才  没有标点= -)
然后,用%lld 




先这样吧...  其实别人几行就能解决的东西,不用 想的太复杂了
** 不知道是好习惯还是什么,先for循环读入,再for循环判定
** 如果是我那个写法&&里面还要判断%的话...感觉直接增加了一倍的长度啊
反而是(只)看是不是比min小什么的,更有用一点 
因为这个条件没那么容易满足
(自己想的为什么我在(2)里面一点区别超时了)
 
最后贴上3最后的代码 
#include<iostream>

using namespace std;

typedef long long ll;  
const int N= 1e5+10;  
ll box[N];  

int main()
{
//	ll minn = 1e18;
	ll num;
	ll n;

 scanf("%lld%lld",&num,&n);
//	ll record;
	
	ll record2=0;	
	ll minn = 1e18;
	for (ll i = 1; i <= n; i++)
	scanf("%lld",&box[i]);
	//	record = num % (box[i]);
	for (ll i = 1; i <= n; i++)
	{
		if ( minn >(num % (box[i])))
		{
			minn = num % (box[i]);
			record2 = i;
		
		}
		
	}
	
	
//	if(record2) printf("%lld %lld\n",record2,num/box[record2]);  
   // else printf("%lld %lld\n",1,num/box[1]);  
printf("%lld %lld\n", record2, num / box[record2]);

	return 0;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值