|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『楼 主』:
[出题]文本最末列数值乘一个数
这是昨晚一个朋友提出的题目,现在加深一下难度。
a.txt
7_.__ 69923.3.__.. _69923_
._. _927 18.92__3. _4828_
7 53__3_01337.64_ 2489__133_
1. _45_._ 0 .7.8_2.__7627_
.4.1 _.245.3._9 72_5_576___ _ 以_和空格作为分隔符,最后一列的数值乘以7,其他不变。
已知的条件,数字是随机的,最末列的数值是整数,即使乘以7,仍在CMD所能计算范围内。
_与空格与“.”的位置和数量与每行的列数都是随机的。
输出如下:
7_.__ 69923.3.__.. _489461_
._. _927 18.92__3. _33796_
7 53__3_01337.64_ 2489__931_
1. _45_._ 0 .7.8_2.__53389_
.4.1 _.245.3._9 72_5_4032___ _ 只是对最末列的数值进行运算操作,其他不变。
要求通用,高效。
[ Last edited by pusofalse on 2008-8-7 at 07:22 AM ]
|

心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-8-7 06:57 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
2 楼』:
这个。。。
乱序取值的题中已经有过类似的了。。
而且比这个难许多。。
|

知,不觉多。不知,乃求知 |
|
2008-8-7 08:24 |
|
|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
3 楼』:
楼上的朋友不要这样说嘛,你那个题我看过,新手做得出的能有几个呢。方便新手,新手而已。不是应该从简到难的吗。。。^_^
|

心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-8-7 09:03 |
|
|
huahua0919
银牌会员
    
积分 1608
发帖 780
注册 2007-10-7
状态 离线
|
 『第
4 楼』:
新手不出力,我出力吧
我写了两种方法,效率各有差异,通用性都强
方法一:(用时0.25~0.30秒)
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (LastNumberChange.txt) do set/a n+=1&set LastLine=$%%i$
for /f "delims=" %%i in (LastNumberChange.txt) do (
set/a m+=1
if %n% neq !m! call set "all=!all!%%i&echo."
)
:start
set FirstNumber=%LastLine:~,1%
set "all1=!all1!%FirstNumber%"
set LastLine=%LastLine:~1%
echo %LastLine%|findstr "[0-9]" >nul&&goto :start
:all1
set /a t+=1
call set LastOne=%%all1:~-!t!%%
set/a x=LastOne*1
if "%LastOne%"=="%x%" goto :all1
set/a LastOne=%LastOne:~1%*7
set /a t-=1
set xlm=!all1:~,-%t%!
Set "Sum=%all%%xlm%%LastOne%%LastLine%"
echo %Sum:$=%
pause 方法二:(用时0.02~0.05秒)
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (LastNumberChange.txt) do set/a n+=1&set LastLine=$%%i$
for /f "delims=" %%i in (LastNumberChange.txt) do (
set/a m+=1
if %n% neq !m! call set "all=!all!%%i&echo."
)
:LastOne
set/a x+=1
call set LastOne=%%LastLine:~-!x!,1%%
set /a Mult=%LastOne%*1
if not "%Mult%"=="%LastOne%" goto :LastOne
set/a x-=1
call set Front=%%LastLine:~,-%x%%%
call set Last=%%LastLine:~-%x%%%
:Middle
set/a x1+=1
call set LastOne1=%%Front:~-!x1!%%
set /a Mult1=%LastOne1%*1
if "%Mult1%"=="%LastOne1%" goto :Middle
set/a Middle=%LastOne1:~1%*7
set/a x1-=1
call set Front=%%Front:~,-%x1%%%
set "Sum=%all%%Front%%Middle%%Last%"
echo %Sum:$=%
pause
|
|
2008-8-8 13:16 |
|
|
terse
银牌会员
    
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
|
2008-8-9 00:59 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-8-9 12:35 |
|
|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
7 楼』:
楼上几位的代码都很精彩。学习了!
|

心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-8-9 12:36 |
|