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 万美金不等的支票就 ...
一周排行
  • 前言: ?这篇文章来自于国外的carnal0wnage,具体是通过利用windbg载入Mimikatz读取虚拟机内存文件(vmem/vmsn文件),从而获取到其中的密码.之前也有人单独介绍过Mimikatz和meta ...
  • 1.判断是否支持Bluetooth BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(bluetoothAdap ...
  • 远程重装Linux: 1.原本的系统必须是Linux(GRUB) 2.原本的系统还可以登陆 3.新装的系统是Linux 满足以上要求就可以采用下面的方法安装: cd /boot wget http://mirror. ...
  •   一.页面跳转1.利用UINavigationController,调用pushViewController,进行跳转:这种采用压栈和出栈的方式,进行Controller的管理.调用popViewControlle ...
  • 在“怎样让Redis在你的系统中发挥作用”一文中,Salvatore 'antirez’ Sanfilippo告诉我们如何利用Redis独有的数据结构处理能力来解决一些常见问题.一些Redis原语命令比如LPUSH. ...
  • 6月23日消息,据国外媒体报道,苹果周二宣布,iPad平板电脑在美国市场的销量已达到300万部,此时距离iPad上市仅80天时间.苹果CEO史蒂夫·乔布斯(Steve Jobs)称:"人们喜欢iPad,因为 ...
  • 上周,德国反病毒软件评测机构AV-Test的一项研究称,微软必应搜索引擎在识别网站是否包含恶意软件方面的能力是谷歌的5倍.不过,微软表示并不同意这一数据,并在今天针对AV-Test的结论发布了一份声明.必应的研发人员 ...
  • 我之前做了一个用于打标签的用户控件,结合ASP.NET的ScriptManager,可以实现页面部分更新的AJAX效果.这段时间忙着网站改版,这个用户控件不想就那么丢掉,所以想稍加改进,然后继续使用.现在有个问题:用 ...
  • 自己动手打造"超高精度浮点数类" [email protected]  tag:PI,超高精度浮点数,TLargeFloat,FFT乘法,二分乘法,牛顿迭代法,borwein四次迭代,AGM二 ...
  • 今天小编为大家带来了神魔结婚有什么好处 神魔结婚好处详解,感兴趣的朋友们可以跟着小编去下文了解一下哦 今天小编为大家带来了神魔结婚有什么好处 神魔结婚好处详解,感兴趣的朋友们可以跟着小编去下文了解一下哦! 神魔结婚有 ...