关于2024CSP-J T3的一种奇葩做法(过了样例,但不知是否可行)
先用一个数组保存所有数字所需的木棒根数:
d[11]={6,2,5,5,4,5,6,3,7,6};
因为 n<105,所以ans必然<105,于是可以从1往后枚举到105:
for(int i=1;i<=100005;i++)
这样就避免了前导零的问题,也能ansmin
在循环里面,可以先把整数转成字符串,然后就可以获得i所需的木棒根数,与n相比较,即可求出答案
核心代码如下:
cin>>T;
while(T--){
cin>>n;
bool fl=1;
for(int i=1;i<=100005;i++){
int cnt=0;
for(auto j:s){
cnt+=d[j-'0'];
}
if(cnt==n){
cout<<i<<endl;
fl=0;
break;
}
}
if(fl){
cout<<-1<<endl;
}
}
-
注意!!! 在Linux环境下,不能使用函数 itoa,只能手写
-
关于此代码的时间复杂度:
循环:O(n)
int转string:O(6)
判断:O(6)
多组数据:O(T)
所以整个代码的时间复杂度为:O(36×Tn)
∵T<50,n<105∴可以在1000ms内通过