| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:请教大家没算法解出此题增加效率
只看楼主 加入收藏
wanghuijide
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-9-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
请教大家没算法解出此题增加效率
定义如果<x0,y0>和<x1,y1>满足x0-x1=y0-y1,则称这两个为等差对。
mm的问题是,问在<x,y>(0<=x,y<=n)<0,0>,<0,1>…<1,0>,<1,1>…<2,0>,
<2,1>…<n,0>…<n,1>…这(n+1)^2个有序对中存在多少个等差对?
第一行输入一个整数T(T<=1000),表示case数。
下面T行有T个case,每个case只有一个整数n(1<=n<=10^9),表示0<=x,y<=n
每个case输出一行,表示等差对的数量,这个结果可能很大,只需最后结果%20111111即可。
我的代码暴力超时
      while(T--)
    {
        s=0;
        scanf("%lld",&n);
        s+=((n%20111111)*(n+1)%20111111)%20111111/2;
        for( i=n;i>1;i--)
        {
            s+=(i%20111111)*((i-1)%20111111)%20111111;
        }
        s%=20111111;
        printf("%lld\n",s);
    }
搜索更多相关主题的帖子: 暴力 
2011-12-03 13:35
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:20 
其实,这仅仅是要归纳为一个公式而已。
可以考虑(x,y)中,以y - x作为间距,就可以得到一个矩阵,以5个为例

     0,1, 2, 3, 4,
     -1,0, 1, 2, 3,
    -2, -1, 0, 1, 2,
    -3, -2, -1, 0, 1,
    -4, -3, -2, -1, 0

查看其斜对角线,无论T值为多少,仅仅右上角和左下角两个没有等差对。共有等差对数为:2T - 3个
2011-12-08 16:25
快速回复:请教大家没算法解出此题增加效率
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018976 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved