CF-375A Divisible by Seven

来源:互联网 发布:马鞍山市网络推广总监 编辑:程序博客网 时间:2024/04/29 13:43

只要想到了就很容易了,由于7是个素数,它的余数0~6,那么我们只需要把1,6,8,9,前面不过多小数,其余数必定在(0~6),所以任意排序(1,6,8,9)满足加上(0~6)的余数能被7整除就行了,这就靠自己与凑了。

#include<iostream>#include<cstdio>#include<cstring>using namespace std ;int cnt[10];const int num[]={1869,1896,1986,1698,6198,1689,1968};char st[1000005];int main(){    while(scanf("%s",st)!=EOF){int len=strlen(st);memset(cnt,0,sizeof(cnt));for(int i=0;i<len;i++){cnt[st[i]-'0']++;}cnt[1]--;cnt[6]--;cnt[8]--;cnt[9]--;int carry=0;for(int i=1;i<=9;i++){for(int j=0;j<cnt[i];j++){putchar(i+'0');carry=(carry*10+i)%7;}}carry=carry*10000%7;printf("%d",num[carry%7]);for(int i=0;i<cnt[0];i++) putchar('0');puts("");    } return 0 ;}


0 0
原创粉丝点击