• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

.yin

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

AtCoder Beginner Contest 192 C - Kaprekar Number Editorial

 

 

 

 

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    long long n,k,i,f1,f2;
    cin>>n>>k;
    long long a[k+1]={0};
    a[0]=n;
    for(i=1;i<=k;i++) {
        if(!a[i-1]) break;
        else {
            long long sa=a[i-1],num=0;
            for(;sa!=0;) sa/=10,num++;
            long long s[num];
            for(long long j=0;j<num;j++) {
                s[j]=a[i-1]%10;
                a[i-1]/=10;
            }
            sort(s,s+num);
            f1=0,f2=0;
            for(long long p=0;p<10;p++) {
                f1=f1*10+s[p]; 
            }
            for(long long p=9;p>=0;p--) {
                f2=f2*10+s[p]; 
            }
            a[i]=f2-f1;
        }
    }
    if(i!=(k+1)) cout<<0<<endl;
    else cout<<a[k]<<endl;
} 
my Code
#include<stdio.h>
int f(int n){
    int c[20]={};
    while(n){
        c[n%10]++;//类似哈希
        n/=10;
    }
    int g1=0,g2=0;
    for(int i=9;i>=0;i--)for(int j=0;j<c[i];j++)g1=g1*10+i;
    for(int i=0;i<=9;i++)for(int j=0;j<c[i];j++)g2=g2*10+i;
    return g1-g2;
}

int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=0;i<k;i++)n=f(n);
    printf("%d\n",n);
}
standard Code

 

 

posted on 2021-02-20 22:07  .yin  阅读(33)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3