codeforces #306 550C C. Divisibility by Eight(同余模定理+枚举)
来源:互联网 发布:矩阵有没有分配律 编辑:程序博客网 时间:2024/04/30 11:43
题目链接:
点击打开链接
题目大意:
给出一个数,问拿走某几位,能否使这个数被8整除(可以选择全部留下)
题目分析:
这道题主要考对同余模定理的理解,整个数mod8
首先看对于第i位上来说相当于 10^(i-1)*digit%8,当i>3时,10^3*10^(i-4)%8 = 0*10^(i-4) = 0
所以只考虑三位数的情况即可,1%8 = 1 , 10%8 = 2 , 100%8 = 4
那么因为取走数之后相对顺序不变,所以我们只需要枚举这三个数,取自哪几位即可,然后判断是否相加取模为0
最后构建的数一定可以作为一个三位数,除非位数不够,或者根本不能构造
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define MAX 107using namespace std;int num[MAX];char s[MAX];int main ( ){ scanf ( "%s" , s ) ; int len = strlen(s); for ( int i = 0 ; i < len ; i++ ) num[s[i]-'0']++; if ( num[8] ) { puts ( "YES" ); puts ( "8" ); return 0; } if ( num[0] ) { puts( "YES" ); puts( "0" ); return 0; } if ( len == 1 ) { puts("NO"); return 0; } for ( int i = len-1 ; i > 0 ; i-- ) for ( int j = i-1 ; j >= 0 ; j-- ) { int num1 = s[i]-'0'; int num2 = s[j]-'0'; if ( (num1*1 + num2*2)%8 == 0 ) { puts("YES" ); printf ( "%d%d\n" , num2 , num1 ); return 0; } } if ( len == 2 ) { puts("NO"); return 0; } for ( int i = len-1 ; i >= 0 ; i-- ) for ( int j = i-1 ; j >= 0 ; j-- ) for ( int k = j-1; k >= 0 ; k-- ) { int num1 = s[i]-'0'; int num2 = s[j]-'0'; int num3 = s[k]-'0'; if ( (num1*1 + num2*2 + num3*4)%8 == 0 ) { puts("YES"); printf ( "%d%d%d\n" , num3,num2,num1); return 0; } } puts("NO"); return 0;}
0 0
- codeforces #306 550C C. Divisibility by Eight(同余模定理+枚举)
- CodeForces 550C Divisibility by Eight(枚举)
- CodeForces 550C Divisibility by Eight 数学 枚举
- 550C Divisibility by Eight(还是枚举)
- CODEFORCES 550 C. Divisibility by Eight
- codeforces 550C Divisibility by Eight(数学题)
- Codeforces 550 C. Divisibility by Eight
- 【codeforces 550C】Divisibility by Eight
- C. Divisibility by Eight
- Codeforces Round #306 (Div. 2)C. Divisibility by Eight--模拟
- Codeforces Round #306 (Div. 2) C.Divisibility by Eight
- CodeForces 550C Divisibility by Eight (规律,暴力)
- codeforces 550C Divisibility by Eight (暴力)
- codeforce 550c Divisibility by Eight (DFS)
- cf 550c Divisibility by Eight 【规律】
- CF C. Divisibility by Eight
- Codeforces Divisibility by Eight
- CodeForces 550C Divisibility by Eight 简单题算是找规律?
- 14个Xcode中常用的快捷键操作
- 排序算法-堆排序
- LeetCode 1.Two Sum
- 全民Scheme(0):lat的定义
- unity学习笔记
- codeforces #306 550C C. Divisibility by Eight(同余模定理+枚举)
- 浅谈 MVP in Android
- c++中*、->、&
- mysql缓存机制
- bug的处理流程(不谈工具)
- ios网络连接状态监测
- 一个简单方法完成C#时间间隔的计算
- 给字符数组的一个字符赋值整数0的结果原来是这样
- js获取tagName ,自定义标签并获取