牛客33-tokitsukaze and Number Game(数论)
题目描述
tokitsukaze又在玩3ds上的小游戏了,现在她遇到了难关。
tokitsukaze得到了一个整数x,并被要求使用x的每一位上的数字重新排列,组成一个能被8整除的数,并且这个数尽可能大。
聪明的你们请帮帮可爱的tokitsukaze,如果无法组成被8整除的数,请输出-1。
保证输入不含前导0,输出也不能含前导0。
输入描述:
第一行包括一个正整数T(T<=1000),表示T组数据。
接下来T行,每一行包括一个整数x,(0≤x≤10^100)。
输出描述:
请输出用这些数字组成出能被8整除的最大的数,如果无法组成出能被8整除的数,请输出-1。
示例1
输入
2
666
1256
输出
-1
6512
一个数能否被8整除,若大于999,呢么后三位能整除8,呢么这个数字就能整除8
快速判断一个数能否被1、2、3、4、5、6、7、8、9、10、11、12、13、17、19、23等整除的规律总结:
https://blog.csdn.net/weixin_41183791/article/details/84887846
ac:
#include<bits/stdc++.h>
using namespace std;
int c[10]={0};
char str[1010]={0};struct node
{int num;int max2;int xc[10]={0};friend bool operator <(node a,node b){if(a.max2==b.max2)return a.num>b.num;else return a.max2<b.max2;}
}a[1000];int b[3]={0};int init()
{int n,m,x,j=1;a[0].num=0; //别忘了000哦a[0].xc[0]=3;a[0].max2=0;for(int i=100;i<1000;i++){if(i%8==0){a[j].num=i;b[0]=i%10;b[1]=(i%100)/10;b[2]=i/100;a[j].xc[b[0]]++;a[j].xc[b[1]]++;a[j].xc[b[2]]++;sort(b,b+3,greater<int>());a[j].max2=b[0]*100+b[1]*10+b[2];j++;}}sort(a,a+j);return j;
}int gg[]={8,16,24,32,40,48,56,64,72,80,88,96};int main()
{int t;int j=init();scanf("%d",&t);while(t--){memset(str,0,sizeof(str));memset(c,0,sizeof(c));scanf("%s",&str);int len=strlen(str);if(len==1){if(str[0]-'0'==8)printf("8\n");else if(str[0]-'0'==0)printf("0\n");else printf("-1\n");}else if(len==2){int flag=0;int xx=(str[0]-'0')*10+str[1]-'0';int yy=str[0]-'0'+(str[1]-'0')*10;for(int i=11;i>=0;i--){if(xx==gg[i]||yy==gg[i]){flag=1;printf("%d\n",gg[i]);break;}}if(flag==0)printf("-1\n");}else{for(int i=0;i<len;i++)c[str[i]-'0']++;int sign=0;for(int i=0;i<j;i++){int flag=0;for(int k=0;k<10;k++){if(c[k]<a[i].xc[k]){flag=1;break;}}if(flag==0){for(int k=0;k<10;k++)c[k]-=a[i].xc[k];for(int k=10;k>=0;){if(c[k]>0){printf("%d",k);c[k]--;}else k--;}if(i==0)printf("000\n");else printf("%d\n",a[i].num);sign=1;break;}}if(sign==0)printf("-1\n");}}return 0;
}
转载于:https://www.cnblogs.com/wangtao971115/p/10358242.html
牛客33-tokitsukaze and Number Game(数论)相关推荐
- 【牛客 - 185D】星光晚餐(数论,结论,思维,模型)
题干: Johnson和Nancy要在星光下吃晚餐.这是一件很浪漫的事情. 为了增加星光晚餐那浪漫的氛围,他拿出了一个神奇的魔法棒,并且可以按照一定的规则,改变天上星星的亮暗. Johnson想考考N ...
- Hash Function 2021牛客暑期多校训练营1 数论 + NTT
Hash Function solution 任意选择该集合中的两个数,a,b,由于a%mod<>b%mod任意选择该集合中的两个数,a,b,由于a\%mod<>b\%mod任 ...
- 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)
链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...
- 【牛客 - 1080E】tokitsukaze and Segmentation(dp,递推,思维)
题干: 链接:https://ac.nowcoder.com/acm/contest/1080/E 来源:牛客网 tokitsukaze有一个长度为n的字符串,字符串仅包含'0'-'9'. tokit ...
- 【牛客 - 1080B】tokitsukaze and Hash Table(STLset,并查集,Hash)
题干: 链接:https://ac.nowcoder.com/acm/contest/1080/B 来源:牛客网 tokitsukaze有n个数,需要按顺序把他们插入哈希表中,哈希表的位置为0到n-1 ...
- 2021牛客暑期多校训练营
2021牛客暑期多校训练营1 A- Alice and Bob /* 博弈问题 两堆石头,每人每次从其中一堆拿k(k>0)个, 同时从另一堆拿s*k个(s>=0),不能进行操作的即失败 * ...
- 【牛客 - 1080D】tokitsukaze and Event(最短路,思维)
题干: 链接:https://ac.nowcoder.com/acm/contest/1080/D 来源:牛客网 这天,tokitsukaze带着她的舰队去才归一儿海探索.这个海域有n个站点,深海舰队 ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 2019牛客网暑假多校训练第四场 K —number
链接:https://ac.nowcoder.com/acm/contest/884/K 来源:牛客网 题目描述 300iq loves numbers who are multiple of 300 ...
- 2019牛客暑期多校训练营(第七场)D Number(思维)
链接:https://ac.nowcoder.com/acm/contest/887/D 来源:牛客网 题目描述 I have a very simple problem for you. Given ...
最新文章
- android学习之旅_01
- 华为设备不会配置静态路由怎么办?
- [原] 淘宝SKU组合查询算法实现
- onenote快捷键_onenote链接系列:4种链接笔记的地址
- GPU Gems1 - 24 高质量的过滤
- python拦截修改数据包_会Python?那么你一定要试一试mitmproxy
- ffmpeg视频处理
- The system is running in low-graphics mode
- Linux笔记之shell script
- 如何在Java项目中定义并调用自己编写的native方法?
- m3u8手机批量转码_M3U8批量转换app-M3U8批量转换MP4软件下载v1.0 安卓版-西西软件下载...
- C程序的基本组成结构
- 儿童python编程入门-儿童编程python入门
- 英语名言警句100句
- 电脑文件夹加密怎么做?6步教你设置文件夹密码
- 解决Navicat远程服务器2013-Lost connection to MYSQL server at 'waitting for initial communication packet'
- DNS域传送漏洞--vulhub复现
- B4A +GoLang 实现手机端webserver
- 专访网易游戏美术总监:寻找美术风格的蓝海
- java计算机毕业设计springboot+vue足球联赛管理系统
热门文章
- Yet Another Broken Keyboard
- 解决jupyter notebook的kernel error内核启动失败问题
- linux --开机自动挂载硬盘【转】
- opc服务器组态文件已写保护_iscada电力组态监控源代码,电力组态版,只有opc驱动版本...
- python水平_python水平
- python安装库后无法调用摄像头_银川监控摄像头安装,有人在代码里下毒!慎用 pip install 命令...
- 3d打印 路径规划_“光博会+工博会”双展来袭!这个9月,知象光电3D视觉工业应用方案,重磅亮相!...
- python size和count_python中size和count的区别
- YCrCb与YPrPb的含义与区别
- 机器学习与分布式机器学习_我将如何再次开始学习机器学习(3年以上)