yangzijin @ 2024-09-30 16:18:14
#include<bits/stdc++.h>
using namespace std;
bool f(string s){
if(s[0]=='-')return true;
return false;
}
int main(){
string s;
cin>>s;
if(f(s)==true){
long long t=0;
cout<<'-';
for(int i=s.size()-1;i>=1;i--){
t+=int(s[i]-'0');
t*=10;
}
cout<<t/10;
}
else{
long long t=0;
for(int i=s.size()-1;i>=1;i--){
t+=int(s[i]-'0');
t*=10;
}
cout<<t/10;
}
return 0;
}
by BeTheNorthStar @ 2024-09-30 17:19:20
for循环这么判串容易出问题,改成for(int i=s.size()-1;isdigit(s[i]);i--)或者for(int i=s.size()-1;'0'<=s[i]&&s[i]<='9';i--)\ 其实反着扫直接输出就行
by liuzhouyang @ 2024-10-01 17:56:02
@yangzijin 不用这么麻烦啊?
(康康我的代码)
#include<bits/stdc++.h> //头文件
#define int long long //宏定义
#define float double
using namespace std; //命名空间
int n,ans; //初始化
signed main() //主函数
{
ios::sync_with_stdio(false); //改进输入输出速度
cin>>n; //输入
for(int i=n;i!=0;i/=10) //根据位值原理,依次求 n 的每一位 (注意因为有负数,所以将 i>0 改为 i!=0 就行啦)
{
ans*=10; //将这一位往左移 (有个巧妙的地方,0不会左移)
ans+=i%10; //再加上当前末尾
}
cout<<ans; //输出答案
}
by SunLaoC @ 2024-10-01 22:43:06
#include<iostream>
using namespace std;
long long Gin(int t) {
long long i, n=1, m;
for ( i = 10; ; i*=10) {
m = t / i;
if (m==0) {
n = i / 10;
break; }
}
return n;
}
int main() {
long long N, i, n=1, d, S = 0;
cin >> N;
d = Gin(N);
for ( i = 10; ; i*=10)
{
n = N % i-N%(i/10);
if (N%(i/10) == N) { break; }
S = S + n*d*100/(i*i);
}
cout << S << endl;
}
by SunLaoC @ 2024-10-01 22:44:13
@SunLaoC 暴力求解哈哈
by yangzijin @ 2024-10-03 21:12:20
@SunLaoC 谢谢