能被8整除的数
来源:互联网 发布:淘宝女装休闲鞋 编辑:程序博客网 时间:2024/05/01 17:03
CSDN挑战题
题目详情:
给定一个非负整数,问能否重排它的全部数字,使得重排后的数能被8整除。
输入格式:
多组数据,每组数据是一个非负整数。非负整数的位数不超过10000位。
输出格式
每组数据输出一行,YES或者NO,表示能否重排它的全部数字得到能被8整除的数。注意: 重排可以让0开头。
答题说明:
输入样例
610
122
输出样例
YES
NO
解释
第一个数可以变为016 , 160
分析:
#1 输入的整数位数最高可达到10000位,超出整型的范围,比如unsigned int 为 0~2^32-1,也才十几位的整数。所以用string作为输入。
#2 因为1000%8=0,所以对于任何3位数以上的数,只要其最低三位能被8整除,则该数能被8整除。
代码:
复杂度为O(n^3),超时
<span style="font-size:14px;">#include<iostream>#include<string>using namespace std;int main(){string s;while(cin>>s){int n=s.size();int *p=new int[n];for(int i=0;i<n;i++) p[i]=s[i]-'0';if(n==1) cout<<( (p[0]==8) ? "YES":"NO")<<endl;else if(n==2) cout<<(((p[0]*10+p[1])%8==0 || (p[1]*10+p[0])%8==0)?"YES":"NO")<<endl;else{int a,b,c;bool founded=false;for(a=0;!founded &&a<n ;a++) for(b=0;!founded &&b<n;b++) for(c=0;!founded &&c<n;c++) { if(a!=b && b!=c && a!=c) { if((p[a]*100+p[b]*10+p[c])%8==0) { cout<<"YES"<<endl; founded=true; } } } if(!founded) cout<<"NO"<<endl;}}return 0;}</span>
0 0
- 能被8整除的数
- 能被7,11,13整除的数的特征
- 能被9和11整除的数的特征
- 能被17和37整除的数
- 能被17和37整除的数
- 能同时被17和37整除的数
- error:误以为闰年就是能被4整除的数
- 1到100之间能被7整除的数
- 输出能被其它元素整除的数(2016)
- 能被3,5,7整除的数
- 求1~100能被7整除的数之和
- Bailian2887 能被3,5,7整除的数【入门】
- 能被2、3、4、5、6、7、8、9、10等数整除的数的特征
- 能被2、3、4、5、6、7、8、9等数整除的数的特征
- 找出最小的能被1-20中每个数整除的数。
- 能被3,4,5等数整除的数的特征
- 题目5:找出最小的能被1-20中每个数整除的数。
- 判断一个数和这个数的重组对8是否能整除的题
- 数据对齐与sizeof
- 猫都能学会的Unity3D Shader入门指南(二)
- 加载外部模块
- ElasticSearch 在string类型的字段上做排序出错的解决方案
- android StaticLayout参数解释
- 能被8整除的数
- java整合easyui进行的增删改操作
- yii 1.1.*中数据提供者CActiveDataProvider和列表显示组件CListView的使用
- CentOS-5 yum安装mysql-5.5/5.1
- Visual Studio 2010编译openssl
- oracle中Where子句的条件顺序对性能的影响
- JAVA常见异常解析
- Linux 统计代码行数
- JS中的prototype