首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

17/七/2012 ICPC培训 第二天

2013-11-08 
17/7/2012ICPC培训第二天今天上午看了两题,刷出来一题,耗时两个小时。另外那题也花了一个半小时。1、刷掉的题

17/7/2012 ICPC培训 第二天

今天上午看了两题,刷出来一题,耗时两个小时。另外那题也花了一个半小时。

1、刷掉的题(HDU1212)。

这题是求模。不过数会很大。我用的是处理字符串,找规律。一步步缩小数。

主要思想就是:用一个字符串数组存下那个大数。然后从后到前每8位取成一个int数(字符串到整数的

转换),存放在一个整型数组内。然后依次对这个整型数组求模。要注意的是,整型数组从后向前第一

位要模b一次,第二位两次,第三位三次,以此类推。最后,把该数组内的所有数相加再模b一次即为结

果。

2、没完成的题(HDU1216),没思路。听说是模拟题。

 

HDU1212代码:

#include<iostream>using namespace std;const int constant=100000000;const int maxSize=1001;const int help[]={1,10,100,1000,10000,100000,1000000,10000000};char a[maxSize];int b,arraySize;__int64 temp[maxSize/8];void init(){     int len=strlen(a),index=0;          arraySize=0;     memset(temp,0,sizeof(temp));     while(len>=1)     {         while(index<=7 && len>=1)         {              temp[arraySize]+=help[index++]*(a[len-1]-'0');              len--;         }                      if(len>=1)         {               index=0;               arraySize++;         }     }}int MOD(){     __int64 sum=0;          for(int i=0;i<=arraySize;i++)     {         temp[i]%=b;         for(int j=0;j<i;j++)         {              temp[i]*=constant;              temp[i]%=b;         }     }          for(int k=0;k<=arraySize;k++)     {        sum+=temp[k];     }          return sum%b;     }int main(){    while(cin>>a>>b)    {        init();                cout<<MOD()<<endl;    }        return 0;}


 

下午的话我们进行了一场比赛。总共5题,做出4题。

前一个半小时做了A、B、D题,又用了一个小时十分左右搞定了C题。还剩20分钟和别人聊天了17/七/2012  ICPC培训  第二天

C题的数据很变态。被一些特殊情况的处理卡了很长时间。

E题开始了无思路。后来和别人交流下,发现是暴力枚举,和D题解题思路神似,顿时喷血。

其实,我对这次比赛结果还是比较满意的,虽然没能做完。

当然,也有一些问题:

1、前一个半小时很顺利。却不淡定了,思想开小差。觉得自己做的不错,害的自己还得调整。

2、后面一个半小时应该说不顺利。还以为又和上次校赛一样一题不A了呢。明显自己这次表现好点了。

淡定了,敢于积极思考,不再害怕了。

3、对于E题,现在看来很简单。当时就是一点思路也没,这种情况在比赛中应该说很常见,也是我们

必须应对好的。对于这点自己还在思考如何处理中。

最后,这是这次比赛的题目、测试数据以及我的AC代码:点击打开链接

 

 

 

 

 

热点排行