Codeforces 111B【看看自己和别人在代码能力上的差距!】

我的:

#include<iostream>
#include<cstring>
using namespace std;

int x[100001],y[100001],d[100001];
int i =1;

int main()
{
    memset(d,-1,sizeof(d));
    int n;
    cin>>n;
    while(n--)
    {
        int ans = 0,m;
        cin>>x[i]>>y[i];
        for(int j = 1; j*j <= x[i]; j++)
        {
            if(x[i]%j == 0)
            {
                ans++;
                m = j;
            }
        }
        if(m * m == x[i])
            ans = ans*2-1;
        else
            ans = ans*2;
        if(y[i])
        {
            for(int j = 1; j*j <= x[i]; j++)
            {
                if(x[i] % j == 0 && i - d[j] <= y[i])
                    ans--;
                if(x[i] % (x[i]/j) == 0 && i - d[x[i]/j] <= y[i] && j != x[i]/j)
                    ans--;
            }
            cout<<ans<<endl;
        }
        else if(y[i] == 0)
            cout<<ans<<endl;
        for(int j = 1; j*j <= x[i]; j++)
        {
            if(x[i]%j == 0)
            {
                d[j] = i;
                d[x[i]/j] = i;
            }
        }
        i++;
    }
}

别人的:

/*#include<iostream>
#include<stack>
#include<queue>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<cmath>
#define ll long long
#define oo 1000000007
#define MAXN 100005
using namespace std;
int last[MAXN];
int main()
{
      int T,t;
      scanf("%d",&T);
      memset(last,-1,sizeof(last));
      for (t=1;t<=T;t++)
      {
             int x,y,ans,i;
             ans=0;
             scanf("%d%d",&x,&y);
             for (i=1;i*i<=x;i++)
               if (x%i==0)
               {
                     if (t-last[i]>y) ans++;
                     if (x-i*i && t-last[x/i]>y) ans++;
                     last[i]=last[x/i]=t;
               }
             printf("%d\n",ans);
      }
      return 0;
}
*/
#include<cstdio>
#include<cstring>
#define N 100100

int d[N],n,x,t;

int main()
{
    memset(d,-1,sizeof(d));
    scanf("%d",&t);
    for(int idx=1;idx<=t;idx++) {
        scanf("%d%d",&x,&n);
        int ans=0;
        for(int i=1;i*i<=x;i++) {
            if((x%i)==0) {
                int c1=i;
                int c2=x/i;
                //一次可以找到两个约数,i和x/i;
                if(d[c1]+n<idx) ans++;
                if(c1!=c2 && d[c2]+n<idx) ans++;
                d[c1]=d[c2]=idx;
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-11-08 06:59:40

Codeforces 111B【看看自己和别人在代码能力上的差距!】的相关文章

log下一次改别人的代码

有次接到个PM要改版一个功能的UI设计,前端童鞋还没敲定页面的时候,我先看了看这个功能的后台,我擦...简直是惨不忍睹..对PM来说是改版UI,对我这么有点代码洁癖的来说就是优化代码. 首先我能肯定的是,原来这个童鞋对面向对象理解的不太好..其次对代码的整合不够...我就简单log下.. 先说面向对象理解的问题,在一个入口方法里,去调用该类自己的私有方法,这里传参的时候竟然把类属性的值都传过去了..当时我就汗了,,显然在被调用的方法里,直接就可以获取这些类属性的值了..为什么还要去传呢... 再

Git Fork别人的代码后如同步别人的代码

在git上fork别人的代码后,如果别人代码有更新,自己fork的代码是不能自动更新的.需要手动操作. git remote -v 查看是否有远程分支的别名.例如:git remote -v 后显示如下,只有自己fork的路径.需要手动添加. origin https://github.com/bill1208/incubator-carbondata (fetch)origin https://github.com/bill1208/incubator-carbondata (push) gi

当年写的俄罗斯方块(现在更喜欢研究别人的代码)

这个东西大概是4年多前写的,那时写代码很疯狂,不知疲惫,一写就是好几万行.现在则更喜欢研究别人的代码,有时也写些测试代码,或者研究开源的东西.希望真正有些积累后, 再考虑写自己的东西. 感觉当时大的框架做的还行,源代码或许对新手有用. 源代码下载:sourceCode 上几个截图 单人游戏: 人机对战: 设置: posted on 2012-05-03 23:00 http://www.cppblog.com/weiym/archive/2012/05/03/173616.html http:/

接手别人的代码,死的心有吗?

团队里的程序员张三丰要离职,领导让你接手他的工作,叮嘱你一定要尽快掌握张三丰的代码.你的心儿扑通扑通地跳动,你的脑海里萦绕着三个选择:是拒绝呢,还是拒绝呢,还是拒绝呢?你强颜欢笑但实际上心烦意乱怨气纵横--接手别人的代码,那可是程序员要面对的最痛苦最可怕的事啊. 你记起江湖前辈黄药师说过的一句话:如果你恨他,就让他去接手别人的代码. 你的内心是拒绝的,可是你却不由自主地说出了"可以啊"三个字,于是你悲催的旅程拉开了序幕. 这,就是程序员的工作啊~~~~你有什么办法--你特别担心自己会被

如何通过阅读别人的代码提高自己的编程能力

代码阅读的必要性 阅读别人的代码作为研发人员是一件经常要做的事情.一个是学习新的编程语言的时候通过阅读别人的代码是个最佳的学习方法,另外是积累编程经验.如果你有机 会阅读一些操作系统的代码会帮助你理解一些基本的原理.更有就是在你作为一个质量确保人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力 是不能完成相应的任务.最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的. 收集所有可能收集的材料阅 读代码要做的第一件事情是收集所有和项目相关的资料

自学C语言第二课——选择编译器并开始分析别人的代码

听说现在我在大学大学的同学普遍用的编译器是VC6.0,为了方便向他们请教,于是我刚开始决定选择VC6.0来学习.可是安装的过程出现种种问题,我又不想用绿色版,所以最后选择了安装极为方便的DEV-C++.我想要从分析别人的代码开始学起.同学向我推荐了一本书.然后,我就开始分析书里面的代码. 例题1: 通过百度和看我在大学的同学给我的资料,我认识到: 1.关于<stdio.h> stdio.h就是指“standardinput&output" 意思就是说标准输入输出头文件! 所以

如何读别人的代码

p { margin-bottom: 0.25cm; direction: ltr; line-height: 115%; text-align: justify; orphans: 0; widows: 0 } p.western { font-family: "Calibri", serif; font-size: 10pt } p.cjk { font-family: "宋体"; font-size: 10pt } p.ctl { font-family: ;

如何阅读修改别人的代码?

如何阅读别人的代码? 读代码的时间总是比写代码的时间更长 维护升级老代码或者同事突然离职交接, 读代码是必不可少的过程. 不夸张的说,可能没有人觉的读代码比写代码轻松. 但这又是工作中不得不面对的场景. 如果已有代码可以运行,那便跑起来看看 看看需求,知道这段代码干了什么事情,如果能够理解业务就更好了 看看数据库表结构.结合需求 一定会有数据,运行时候的数据对比数据库的数据更容易理解逻辑 看看已有的设计文档.更业务逻辑对应 根据功能分类一个一个的读代码吧 如何在已有基础上进行再次开发? 再次开发

如何阅读别人的代码

############################################## """ 阅读什么样的代码? 很难明确的说应该阅读什么样的代码,只能说有一些基本的原则: 1,阅读那些你用得着的代码 这一步最好从阅读那些你已经在使用的插件或者库文件开始. 这些都是你可以学习的非常好的例子.你已熟悉了它们的公共API,了解它们内部工作原理的障碍是较低的.此外,作为代码的用户,你有机会添加文档.实现新的功能,或者通常以某种方式给项目做贡献. 2,阅读那些你印象深刻的代码