nyoj1086是否被整除

是否被整除

时间限制:1000 ms  |  内存限制:65535 KB
描述
一个位数不大于100万位的正整数,如果它既能被11整除又能被2的n次方整除就输出YES否则输出NO
输入
输入有多组数据每组数据有两行
第一行一个n代表2的n次方(0<n<18)
第二行一个整数
输出
输出只有一行每行一个YES或NO
样例输入
1
110
2
1100
3
110
样例输出
YES
YES
NO
来源
原创
上传者

TC_蒋鑫博

暴力会超时:

   其实此题有规律:

 能被2的N次方的数整除的数的特征
 如果一个数末N位能被2的N次方的数整除,那么这个数就能被2的N次方的这个数整除。
如能被8(2的3次方)整除的数的特征:这个数字的末三位能被8整除。
能被11整除的数的特征   
把一个数由右边向左边数,将奇位上的数字与偶位上的数字分别加起来,再求它们的差,如果这个差是11的倍数(包括0),那么,原来这个数就一定能被11除.   
 例如:判断491678能不能被11整除.   
 —奇位数字的和9+6+8=23    
 
 —偶位数位的和4+1+7=12  
 23-12=11  因此,491678能被11整除.  这种方法叫"奇偶位差法".

#include<stdio.h>
#include<string.h>
char str[10000005];
int fun()
{
    int i,sum=0,len=strlen(str);
    for(i=0; i<len; i++)
    {
        if(i%2) sum+=(str[i]-'0');
        else sum-=(str[i]-'0');
    }
    if(sum%11==0)
        return 1;
    else return 0;
}
int gun(int n)
{
    int i,len=strlen(str);
    long long sum=0,a=1;
    for(i=0; i<n; i++)
        a*=2;
    for(i=len-n; i<len; i++)
        sum=sum*10+str[i]-'0';
    if(sum%a==0)
        return 1;
    else return 0;
}
int main()
{
    int n;
    while(scanf("%d%s",&n,&str)!=EOF)
    {
        if(fun()&&gun(n))
            printf("YES\n");
        else  printf("NO\n");
    }
    return 0;
 }
#include<cstring>  
using namespace std;  
char s[1000005];  
int main()  
{  
    int n;  
    while(~scanf("%d%s",&n,s))  
    {  
        int t=strlen(s);  
        long long int c=(1<<n)*11,sum=0;  
        for(int i=0; i<t; i++)  
            sum=(sum*10+s[i]-'0')%c;  
        printf(sum?"NO\n":"YES\n");  
    }  
    return 0;  
}  

更多相关文章
  • 去哪儿网CEO庄辰超演讲 去哪儿网CEO庄辰超 更多精彩内容,关注"2014易网未来科技峰会"专题 易网科技讯 6月18日消息,由易网科技和易网新闻客户端联合主办的"2014易网未来科技峰会"今日在北京举行,本次峰会主题为"互联网+改变世界" ...
  • 这篇文章主要为大家介绍了drupal常用判断函数,实例汇总了判断首页.判断用户角色.判断权限等常用函数,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例汇总了drupal常用判断函数.分享给大家供大家参考.具体如下: 判断是否为首页:代码如下:if( $is_front ){ } 判断用户是否 ...
  • 经过陈冠希的艳照门事件之后,相信各位网友都对自己电脑里的一些隐私文件的保存问题有了更高的安全要求(不吃亏不知道补牢).无论是黑客入侵.电脑丢失.电脑送修等都可能会导致自己的隐私文件泄露.为了避免这些问题,最方便快捷的方法就是对我们的隐私文件进行加密处理.让别人即使拿到你的文件,也因为没有密码问题而无 ...
  • 目前,市场上很多Android手机软件都具有清理SD卡缓存的功能,比如360,金山等等.那么这些软件是如何实现清理sd卡缓存数据功能的呢?下面,我就给大家演示下,这些功能是如何实现的吧. 一.原理 首先我们还是讲一下这个功能实现的原理吧. 将Android手机中常用的一些应用缓存目录,全部放在一个数 ...
  • 文/cloudxiao门槛儿不高面儿又足的Title,再加上互联网+席卷全国的趋势,产品经理逐渐成为不少人选择职业的最佳选择.每天都有不同背景的人在提问:我想转行/入行做产品经理,该如何做起呢?已经有不少大牛给出了较为全面且专业的建议:不论是从画原型,写文档的基本功,到知识体系的构建:从用户需求的把 ...
  • 本文所揭示的 8 个真相,有可能对于首次创业者来说都是蒙在鼓里的事情.他们往往看到风投就尾随而上,没有做足功课就贸然上前,那么吃闭门羹也是在所难免的事情了.你的初创公司正在快速成长,在某个时点上你很有可能在寻找风投的青睐.但是他们不同于天使投资人,不是仅仅写个位于 1 万到 10 万美金不等的支票就 ...
一周排行
  • 文章只是利用maven将springMVC的框架搭建进行记录. 1.maven项目中pom.xml文件中的代码: Xml代码   <project xmlns="http://maven.apache ...
  • Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上) 目的:指导项目侧自行进行简单的数据泵迁移工作.本文实验环境:Oracle 11.2.0.4,利用数据库自带的scott示例用户进行试验测试 ...
  • 一.前言 从一个网站上,看到一个"抓网页"的代码,觉得有点意思,但是没有提供源代码,于是,自己想写一个,其实代码比较简单的. 二.代码<%@ page contentType="t ...
  •   一   第一个例子前的准备活动:1.要有一个Java编译器,可以是SUN公司的JDK编译器,也可以是微软的VJ++,也可以是别的一些公司开发的编译器,但最好选VJ++,因为它是现在最好的Java编译器. 2.一个 ...
  • 10大习惯让你成为优秀程序员 在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Devel ...
  • 一.获取软件: http://httpd.apache.org/   httpd-2.4.10.tar.gz 二.安装步骤: 解压源文件:         1) tar zvxf  httpd-2.4.10.tar. ...
  • QLineEdit QLineEdit 窗口组件用来输入或者编辑单行纯文本,有撤销/重做,剪切/粘贴和拖放功能. #!/usr/bin/python # -*- coding: utf-8 -*- # ZetCode ...
  • 1, 请求并携带SessionId, 代码如下:   //当请求成共后调用如下代码, 保存Cookie NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCooki ...
  • Html代码   <div class="box">动画选框</div>     Css代码   .box{     width:300px;     height:100 ...
  • Raphael http://raphaeljs.com/ document.createElementNS() HSL颜色 RequestAnimationFrame <patter>画背景网格 dx, ...