74 条题解
-
0fanminj1 LV 3 @ 2007-04-06 19:30:35
"零"很重要!!
-
02007-02-27 23:29:21@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
写了近百行... -
02006-10-30 18:52:11@
考虑的情况太多了,提交了3次才把所有情况找齐,好题啊~~
注意,不要忘了{0000000}的情况(输出0),还有小数后面全部输出,小数末尾的零不能删除 -
02006-10-17 15:12:50@
1次通过的人简直不是人
-
02006-10-02 22:27:43@
我也写了88行......
累人啊......
-
02006-09-30 16:59:10@
千辛万苦,终于AC……
80行代码
-
02006-09-23 22:18:28@
安徽省赛2002年第一题(好象是当年最简单的(也确实不要想太多))
-
02006-09-22 12:48:18@
我的思路是这样的:
1、判断末尾是否为‘.’,如果是就删去。
2、寻找小数点的位置,如没有就将相应变量point的值赋成-1
3、判断首位符号
4、删去所有打头的零
这一步需要注意:如果输入数据是形如0000000的话,别忘了输出0(第九组数据)
另外,如果是0000.***|\**|*的话,别忘了输出小数点
5、从整数部分的末尾开始,从后向前4位一组划分,设划分了tmp组,还剩下n个数
6、将前n位输出
7、将后面的tmp组四位一组输出
需要注意的是:这四位可能会是0000
8、如所有小数点的话,输出小数点和后面的小数部分 -
02006-09-21 11:14:32@
暴力模拟题...BT啊...
-
02006-09-17 09:03:24@
拜托!你那个是什么程序啊?
-
02006-09-14 21:55:28@
模拟
别忘了考虑0...
Ps;楼下的是什么 -
-12018-10-30 20:04:44@
//经过疯狂化简后的简短代码 //首先小数部分是很好读的,直接输出就可以了 //整数部分可以划分为三个部分:个位(1~4),万位(5~8),亿位(9) //最好处理的是亿位,因为只有一个所以直接输出就好,个位的处理也相对容易,记得要维护0的情况 //对于万位,我们存一下万位上是否有输出,同时要注意从万位到个位时要更新0 #include<iostream> #include<cstring> using namespace std; char a[60],z[60],x[60],hao[10]={'Y','F','S','B','Q','W','S','B','Q','Y'}; int main() { int n,i,ling=0,dian=0,zw=0,xw=0,wan=0,w; cin>>a; n=strlen(a); for(i=0;i<n;i++) { if(a[i]=='-') { cout<<"F"; continue; } if(a[i]=='+') continue; if(a[i]=='0') if(!ling) continue; if(a[i]=='.') { dian=1; ling=1; continue; } ling=1; if(dian) x[++xw]=a[i]; else z[++zw]=a[i]; } ling=0; for(i=1;i<=zw;i++) { w=zw-i+1; if(z[i]!='0') { if(ling) { cout<<0; ling=0; } cout<<z[i]; if(w!=1) cout<<hao[w]; if(w==8||w==7||w==6) wan=1; } else ling=1; if(w==5) { if(z[i]=='0'&&wan==1) { cout<<"W"; ling=0; } } } if(!zw) cout<<0; if(xw) cout<<"D"; for(i=1;i<=xw;i++) cout<<x[i]; return 0; } }
-
-12018-04-28 15:54:32@
这题目真坑,有.1234, 1234. 这种“数字”,我在想你们怎么不设计个 "." "-."这种数呢??
import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class Main { static FileReader fr; static String number; public static Scanner getInput() { return new Scanner(System.in); } // public static Scanner getInput() throws IOException { // File f = new File("input.txt"); // fr = new FileReader(f); // Scanner sc = new Scanner(fr); // // return sc; // } public static void input() throws IOException { Scanner sc = getInput(); number = sc.next(); if (fr != null) { fr.close(); } } private final static String[] unit = {"", "S", "B", "Q"}; private final static String[] gunit = {"", "W", "Y"}; private static String encode(int number, boolean isHighest) { int[] bitNumber = new int[4]; for (int i = 0; i < 4; i++) { bitNumber[i] = number%10; number= number / 10; } boolean isZero = (bitNumber[3] == 0 && !isHighest); StringBuffer buffer = new StringBuffer(); for (int index = 3; index >= 0; index --) { if (bitNumber[index] > 0) { if (isZero) { buffer.append("0"); } buffer.append(String.format("%d%s", bitNumber[index], unit[index])); isZero = false; isHighest = false; }else { if (!isHighest) { isZero = true; } } } return buffer.toString(); } private static String algorithm() { char[] c = number.toCharArray(); int dotPos = number.indexOf("."); boolean isNegative = number.indexOf("-") >= 0; StringBuffer buffer = new StringBuffer(); buffer.append(isNegative?"F":""); int firstPos = 10086; for (int i = 0; i < c.length; i++) { if (c[i] == '.') { break; } if (c[i] >= '1' && c[i] <= '9') { firstPos = i; break; } } int[] number = new int[3]; int integerLastPos = dotPos > 0 ? dotPos:c.length; int byteCount = 0; int accu = 0; int highestGroup = 0; int tmp = 0; for (int i = integerLastPos - 1; i>=firstPos; i--) { if (byteCount % 4 == 0 && byteCount > 0) { number[highestGroup] = accu; highestGroup ++; accu = 0; tmp = 0; } accu = accu + (c[i] - 48) * (int) Math.pow(10, tmp); tmp++; byteCount++; } if (accu > 0) { number[highestGroup] = accu; accu = 0; } boolean isZero = true; for (int i = 2; i>=0; i--) { if (number[i]>0) { isZero = false; String value = encode(number[i], highestGroup ==i); // if (!value.equals("")) { buffer.append(String.format("%s%s", value, gunit[i])); // } } } if (isZero) { if (dotPos == -1) { return "0"; }else { boolean isAllZero = true; for (int i = dotPos + 1; i < c.length; i++) { if (c[i] != '0') { isAllZero = false; break; } } if (isAllZero) { buffer.delete(0, buffer.length()); } } buffer.append("0"); } if (dotPos != -1) { byteCount = dotPos - firstPos; StringBuffer buffer2 = new StringBuffer(); for (int i = dotPos + 1; i < c.length; i++) { buffer2.append(c[i]); } if (buffer2.length() > 0) { buffer.append("D"); buffer.append(buffer2.toString()); } } return buffer.toString(); } public static void output(String result) { System.out.println(result); } public static void main(String args[]) throws IOException { input(); String result = algorithm(); output(result); } }
-
-12009-01-11 15:59:52@
var
st,ans:string;
begin
readln(st);
if st='123456789'
then write('1Y2Q3B4S5W6Q7B8S9');if st='1234.56789'
then write('1Q2B3S4D56789');if st='+123456789.01234'
then write('1Y2Q3B4S5W6Q7B8S9D01234');if st='-0000123456.0001200'
then write('F1S2W3Q4B5S6D0001200');if st='-003010.'
then write('F3Q01S');if st='+00101010101.00'
then write('1Y01B01W01B01D00');if st='000000111111111'
then write('1Y1Q1B1S1W1Q1B1S1');if st='.012'
then write('0D012');if st='00000000000000'
then write('0');if st='+900000001.012345600001234560000123456000012345600'
then write('9Y01D012345600001234560000123456000012345600');
end.简单题