#include<bits/stdc++.h> using namespace std; typedef long long ll; int bok[15],ind[15]; bool cmp(int a,int b){ return a>b; } int main() { string phone; getline(cin,phone); vector<int>num; for(int i=0;i<phone.length();i++){ num.push_back((phone[i]-'0')%10); } sort(num.begin(),num.end(), cmp); int size = unique(num.begin(),num.end())-num.begin(); for(int i=0;i<size;i++) bok[num[i]]=i; for(int i=0;i<phone.length();i++){ int t = (phone[i]-'0')%10; ind[i] = bok[t]; } printf("int[] arr = new int[]{"); for(int i=0;i<size;i++){ printf("%d",num[i]); if(i==size-1)printf("};\n"); else printf(","); } printf("int[] index = new int[]{"); for(int i=0;i<phone.length();i++){ printf("%d",ind[i]); if(i==phone.length()-1)printf("};\n"); else printf(","); } return 0; }
题目不难
注意 尽管是11位可以用longlong盛电话号 但是如果输入样例是010203
这种的 恐怕ll 就会读成10203了 所以还是用字符串出的问题会少一点