terça-feira, 28 de setembro de 2010

TI - Google Questões (Solução via SQL Server)

Questão 1
O que o seguinte programa (dado na forma de pseucódigo) imprime?
a = 8
b = 8
se b >= 1, então b = b * 2
a = a + b
imprime (a + b)

Resultado:

A | B
8 | 8

SE B >= 1, então B = B * 2
SENAO a = a + b

A | B
8 | 8 * 2 = 16

IMPRIME (A+B) = 24

Questão 2
Quantas vezes o trecho de pseudocódigo seguinte imprime ‘oi’? (obs: na nossa pseudo-linguagem, o laço inclui os extremos, ou seja, 1 até 4 significa 1, 2, 3, 4.)
para i = 1 até 9
se i != 4, então
para j = 1 até 5
imprime ‘oi’


DECLARE @I INT,
@J INT,
@CONTADOR INT

SELECT @I = 1,
@J = 1,
@CONTADOR = 0

WHILE @I<=9 BEGIN IF @I<>4
BEGIN
WHILE @J<=5 BEGIN SET @CONTADOR = @CONTADOR+1 PRINT 'OI' SET @J = @J+1 END SET @J = 1 END SET @I = @I+1 END PRINT @CONTADOR Questão 3 Entre 83 and 3329 (inclusive), quantos números são pares e também divisíveis por 5? (Dica: você pode escrever um programa para ajudar no cálculo) DECLARE @CONTADOR INT, @CONSIDERAR INT SELECT @CONTADOR = 83, @CONSIDERAR = 0 WHILE @CONTADOR <= 3329 BEGIN IF @CONTADOR%2=0 AND @CONTADOR%5=0 BEGIN PRINT @CONTADOR SET @CONSIDERAR = @CONSIDERAR+1 END SET @CONTADOR = @CONTADOR+1 END PRINT '---- QUANTIDADE TOTAL ------> '+CAST(@CONSIDERAR AS VARCHAR)

Questão 4
Marcela é uma pessoa muito supersticiosa.
Para ela, um número é sortudo se ele contém o dígito 3
mas não o dígito 8.
Então, na opinião dela, quantos números sortudos existem
entre 14638 e 27333, incluindo os extremos?

-- CRIA TABELA
CREATE TABLE ZQUESTAO4 (
NUMERO INT)

-- LOOPING QUE ARMAZENA OS NUMEROS NA TABELA
DECLARE @CONTADOR INT
SET @CONTADOR = 14638

WHILE @CONTADOR<=27333 BEGIN INSERT INTO ZQUESTAO4 VALUES (@CONTADOR) SET @CONTADOR = @CONTADOR+1 END -- RESULTADO SELECT COUNT(*) FROM ZQUESTAO4 WHERE CAST(NUMERO AS VARCHAR) LIKE '%3%' AND CAST(NUMERO AS VARCHAR) NOT LIKE '%8%' Questão 5 Na pacata vila campestre de Arquivonaoencontradoville, todos os telefones têm 6 dígitos. A companhia telefônica estabelece as seguintes regras sobre os números: Não pode haver dois dígitos consecutivos idênticos, porque isso é chato; A soma dos dígitos tem que ser par, porque isso é legal; O último dígito não pode ser igual ao primeiro, porque isso dá azar. Então, dadas essas regras perfeitamente razoáveis, bem projetadas e maduras, quantos números de telefone na lista abaixo são válidos? 215228,218415, 221632, 224722, 229644, 230847, 233798, 237903, 239224, 241832, 242112, 243248, 246147, 247652, 250688, 252940, 255721, 256882, 259134, 262578, 263327, 266656, 268796, 270350, 272863, 275245, 278601, 278606, 281963, 283751, 288259, 291562, 296545, 298528, 302103, 303431, 307561, 311979, 315548, 320440, 322278, 324469, 324740, 327417, 330263, 331179, 334147, 334932, 336085, 338096, 338106, 342991, 347187, 347590, 348863, 350187, 353246, 354032, 358616, 363056, 363251, 366141, 369906, 371046, 372684, 377077, 381177, 382086, 385627, 385694, 386105, 388179, 390251, 392624, 394225, 395328, 398698, 400102, 404224, 408064, 410386, 411711, 413621, 415653, 417168, 419269, 424197, 427202, 430639, 432570, 437462, 442412, 444990, 447613, 452039, 456750, 459927, 462532, 465756, 467051, 468297, 469089, 471562, 474900, 475534, 476833, 478910, 480437, 482085, 485647, 487736, 489897, 493033, 495182, 498463, 502539, 502785, 505926, 508246, 511720, 515395, 515595, 516362, 520927, 525025, 529957, 530139, 531015, 533760, 534588, 538184, 541403, 542913, 546141, 548038, 549095, 552509, 556808, 560382, 563503, 565304, 567165, 567675, 572218, 573856, 576408, 578085, 578997, 579553, 584487, 589220, 590967, 593234, 597867, 599823, 603666, 607878, 611482, 611854, 612811, 614119, 615956, 617547, 621070, 621309, 626105, 626885, 631080, 635911, 639606, 640175, 641607, 645158, 647958, 652199, 656507, 658615, 662663, 662947, 664704, 666668, 667544, 669440, 673512, 675931, 676963, 677113, 678606, 682716, 682998, 684883, 686140, 688963, 689054, 692042, 695458, 697031, 697457, 697623, 698026 -- Cria Tabela CREATE TABLE ZQUESTAO5 ( NUMERO VARCHAR(255) ) GO -- Popula Tabela INSERT INTO ZQUESTAO5 VALUES ('215228') INSERT INTO ZQUESTAO5 VALUES ('218415') INSERT INTO ZQUESTAO5 VALUES ('221632') INSERT INTO ZQUESTAO5 VALUES ('224722') INSERT INTO ZQUESTAO5 VALUES ('229644') INSERT INTO ZQUESTAO5 VALUES ('230847') INSERT INTO ZQUESTAO5 VALUES ('233798') INSERT INTO ZQUESTAO5 VALUES ('237903') INSERT INTO ZQUESTAO5 VALUES ('239224') INSERT INTO ZQUESTAO5 VALUES ('241832') INSERT INTO ZQUESTAO5 VALUES ('242112') INSERT INTO ZQUESTAO5 VALUES ('243248') INSERT INTO ZQUESTAO5 VALUES ('246147') INSERT INTO ZQUESTAO5 VALUES ('247652') INSERT INTO ZQUESTAO5 VALUES ('250688') INSERT INTO ZQUESTAO5 VALUES ('252940') INSERT INTO ZQUESTAO5 VALUES ('255721') INSERT INTO ZQUESTAO5 VALUES ('256882') INSERT INTO ZQUESTAO5 VALUES ('259134') INSERT INTO ZQUESTAO5 VALUES ('262578') INSERT INTO ZQUESTAO5 VALUES ('263327') INSERT INTO ZQUESTAO5 VALUES ('266656') INSERT INTO ZQUESTAO5 VALUES ('268796') INSERT INTO ZQUESTAO5 VALUES ('270350') INSERT INTO ZQUESTAO5 VALUES ('272863') INSERT INTO ZQUESTAO5 VALUES ('275245') INSERT INTO ZQUESTAO5 VALUES ('278601') INSERT INTO ZQUESTAO5 VALUES ('278606') INSERT INTO ZQUESTAO5 VALUES ('281963') INSERT INTO ZQUESTAO5 VALUES ('283751') INSERT INTO ZQUESTAO5 VALUES ('288259') INSERT INTO ZQUESTAO5 VALUES ('291562') INSERT INTO ZQUESTAO5 VALUES ('296545') INSERT INTO ZQUESTAO5 VALUES ('298528') INSERT INTO ZQUESTAO5 VALUES ('302103') INSERT INTO ZQUESTAO5 VALUES ('303431') INSERT INTO ZQUESTAO5 VALUES ('307561') INSERT INTO ZQUESTAO5 VALUES ('311979') INSERT INTO ZQUESTAO5 VALUES ('315548') INSERT INTO ZQUESTAO5 VALUES ('320440') INSERT INTO ZQUESTAO5 VALUES ('322278') INSERT INTO ZQUESTAO5 VALUES ('324469') INSERT INTO ZQUESTAO5 VALUES ('324740') INSERT INTO ZQUESTAO5 VALUES ('327417') INSERT INTO ZQUESTAO5 VALUES ('330263') INSERT INTO ZQUESTAO5 VALUES ('331179') INSERT INTO ZQUESTAO5 VALUES ('334147') INSERT INTO ZQUESTAO5 VALUES ('334932') INSERT INTO ZQUESTAO5 VALUES ('336085') INSERT INTO ZQUESTAO5 VALUES ('338096') INSERT INTO ZQUESTAO5 VALUES ('338106') INSERT INTO ZQUESTAO5 VALUES ('342991') INSERT INTO ZQUESTAO5 VALUES ('347187') INSERT INTO ZQUESTAO5 VALUES ('347590') INSERT INTO ZQUESTAO5 VALUES ('348863') INSERT INTO ZQUESTAO5 VALUES ('350187') INSERT INTO ZQUESTAO5 VALUES ('353246') INSERT INTO ZQUESTAO5 VALUES ('354032') INSERT INTO ZQUESTAO5 VALUES ('358616') INSERT INTO ZQUESTAO5 VALUES ('363056') INSERT INTO ZQUESTAO5 VALUES ('363251') INSERT INTO ZQUESTAO5 VALUES ('366141') INSERT INTO ZQUESTAO5 VALUES ('369906') INSERT INTO ZQUESTAO5 VALUES ('371046') INSERT INTO ZQUESTAO5 VALUES ('372684') INSERT INTO ZQUESTAO5 VALUES ('377077') INSERT INTO ZQUESTAO5 VALUES ('381177') INSERT INTO ZQUESTAO5 VALUES ('382086') INSERT INTO ZQUESTAO5 VALUES ('385627') INSERT INTO ZQUESTAO5 VALUES ('385694') INSERT INTO ZQUESTAO5 VALUES ('386105') INSERT INTO ZQUESTAO5 VALUES ('388179') INSERT INTO ZQUESTAO5 VALUES ('390251') INSERT INTO ZQUESTAO5 VALUES ('392624') INSERT INTO ZQUESTAO5 VALUES ('394225') INSERT INTO ZQUESTAO5 VALUES ('395328') INSERT INTO ZQUESTAO5 VALUES ('398698') INSERT INTO ZQUESTAO5 VALUES ('400102') INSERT INTO ZQUESTAO5 VALUES ('404224') INSERT INTO ZQUESTAO5 VALUES ('408064') INSERT INTO ZQUESTAO5 VALUES ('410386') INSERT INTO ZQUESTAO5 VALUES ('411711') INSERT INTO ZQUESTAO5 VALUES ('413621') INSERT INTO ZQUESTAO5 VALUES ('415653') INSERT INTO ZQUESTAO5 VALUES ('417168') INSERT INTO ZQUESTAO5 VALUES ('419269') INSERT INTO ZQUESTAO5 VALUES ('424197') INSERT INTO ZQUESTAO5 VALUES ('427202') INSERT INTO ZQUESTAO5 VALUES ('430639') INSERT INTO ZQUESTAO5 VALUES ('432570') INSERT INTO ZQUESTAO5 VALUES ('437462') INSERT INTO ZQUESTAO5 VALUES ('442412') INSERT INTO ZQUESTAO5 VALUES ('444990') INSERT INTO ZQUESTAO5 VALUES ('447613') INSERT INTO ZQUESTAO5 VALUES ('452039') INSERT INTO ZQUESTAO5 VALUES ('456750') INSERT INTO ZQUESTAO5 VALUES ('459927') INSERT INTO ZQUESTAO5 VALUES ('462532') INSERT INTO ZQUESTAO5 VALUES ('465756') INSERT INTO ZQUESTAO5 VALUES ('467051') INSERT INTO ZQUESTAO5 VALUES ('468297') INSERT INTO ZQUESTAO5 VALUES ('469089') INSERT INTO ZQUESTAO5 VALUES ('471562') INSERT INTO ZQUESTAO5 VALUES ('474900') INSERT INTO ZQUESTAO5 VALUES ('475534') INSERT INTO ZQUESTAO5 VALUES ('476833') INSERT INTO ZQUESTAO5 VALUES ('478910') INSERT INTO ZQUESTAO5 VALUES ('480437') INSERT INTO ZQUESTAO5 VALUES ('482085') INSERT INTO ZQUESTAO5 VALUES ('485647') INSERT INTO ZQUESTAO5 VALUES ('487736') INSERT INTO ZQUESTAO5 VALUES ('489897') INSERT INTO ZQUESTAO5 VALUES ('493033') INSERT INTO ZQUESTAO5 VALUES ('495182') INSERT INTO ZQUESTAO5 VALUES ('498463') INSERT INTO ZQUESTAO5 VALUES ('502539') INSERT INTO ZQUESTAO5 VALUES ('502785') INSERT INTO ZQUESTAO5 VALUES ('505926') INSERT INTO ZQUESTAO5 VALUES ('508246') INSERT INTO ZQUESTAO5 VALUES ('511720') INSERT INTO ZQUESTAO5 VALUES ('515395') INSERT INTO ZQUESTAO5 VALUES ('515595') INSERT INTO ZQUESTAO5 VALUES ('516362') INSERT INTO ZQUESTAO5 VALUES ('520927') INSERT INTO ZQUESTAO5 VALUES ('525025') INSERT INTO ZQUESTAO5 VALUES ('529957') INSERT INTO ZQUESTAO5 VALUES ('530139') INSERT INTO ZQUESTAO5 VALUES ('531015') INSERT INTO ZQUESTAO5 VALUES ('533760') INSERT INTO ZQUESTAO5 VALUES ('534588') INSERT INTO ZQUESTAO5 VALUES ('538184') INSERT INTO ZQUESTAO5 VALUES ('541403') INSERT INTO ZQUESTAO5 VALUES ('542913') INSERT INTO ZQUESTAO5 VALUES ('546141') INSERT INTO ZQUESTAO5 VALUES ('548038') INSERT INTO ZQUESTAO5 VALUES ('549095') INSERT INTO ZQUESTAO5 VALUES ('552509') INSERT INTO ZQUESTAO5 VALUES ('556808') INSERT INTO ZQUESTAO5 VALUES ('560382') INSERT INTO ZQUESTAO5 VALUES ('563503') INSERT INTO ZQUESTAO5 VALUES ('565304') INSERT INTO ZQUESTAO5 VALUES ('567165') INSERT INTO ZQUESTAO5 VALUES ('567675') INSERT INTO ZQUESTAO5 VALUES ('572218') INSERT INTO ZQUESTAO5 VALUES ('573856') INSERT INTO ZQUESTAO5 VALUES ('576408') INSERT INTO ZQUESTAO5 VALUES ('578085') INSERT INTO ZQUESTAO5 VALUES ('578997') INSERT INTO ZQUESTAO5 VALUES ('579553') INSERT INTO ZQUESTAO5 VALUES ('584487') INSERT INTO ZQUESTAO5 VALUES ('589220') INSERT INTO ZQUESTAO5 VALUES ('590967') INSERT INTO ZQUESTAO5 VALUES ('593234') INSERT INTO ZQUESTAO5 VALUES ('597867') INSERT INTO ZQUESTAO5 VALUES ('599823') INSERT INTO ZQUESTAO5 VALUES ('603666') INSERT INTO ZQUESTAO5 VALUES ('607878') INSERT INTO ZQUESTAO5 VALUES ('611482') INSERT INTO ZQUESTAO5 VALUES ('611854') INSERT INTO ZQUESTAO5 VALUES ('612811') INSERT INTO ZQUESTAO5 VALUES ('614119') INSERT INTO ZQUESTAO5 VALUES ('615956') INSERT INTO ZQUESTAO5 VALUES ('617547') INSERT INTO ZQUESTAO5 VALUES ('621070') INSERT INTO ZQUESTAO5 VALUES ('621309') INSERT INTO ZQUESTAO5 VALUES ('626105') INSERT INTO ZQUESTAO5 VALUES ('626885') INSERT INTO ZQUESTAO5 VALUES ('631080') INSERT INTO ZQUESTAO5 VALUES ('635911') INSERT INTO ZQUESTAO5 VALUES ('639606') INSERT INTO ZQUESTAO5 VALUES ('640175') INSERT INTO ZQUESTAO5 VALUES ('641607') INSERT INTO ZQUESTAO5 VALUES ('645158') INSERT INTO ZQUESTAO5 VALUES ('647958') INSERT INTO ZQUESTAO5 VALUES ('652199') INSERT INTO ZQUESTAO5 VALUES ('656507') INSERT INTO ZQUESTAO5 VALUES ('658615') INSERT INTO ZQUESTAO5 VALUES ('662663') INSERT INTO ZQUESTAO5 VALUES ('662947') INSERT INTO ZQUESTAO5 VALUES ('664704') INSERT INTO ZQUESTAO5 VALUES ('666668') INSERT INTO ZQUESTAO5 VALUES ('667544') INSERT INTO ZQUESTAO5 VALUES ('669440') INSERT INTO ZQUESTAO5 VALUES ('673512') INSERT INTO ZQUESTAO5 VALUES ('675931') INSERT INTO ZQUESTAO5 VALUES ('676963') INSERT INTO ZQUESTAO5 VALUES ('677113') INSERT INTO ZQUESTAO5 VALUES ('678606') INSERT INTO ZQUESTAO5 VALUES ('682716') INSERT INTO ZQUESTAO5 VALUES ('682998') INSERT INTO ZQUESTAO5 VALUES ('684883') INSERT INTO ZQUESTAO5 VALUES ('686140') INSERT INTO ZQUESTAO5 VALUES ('688963') INSERT INTO ZQUESTAO5 VALUES ('689054') INSERT INTO ZQUESTAO5 VALUES ('692042') INSERT INTO ZQUESTAO5 VALUES ('695458') INSERT INTO ZQUESTAO5 VALUES ('697031') INSERT INTO ZQUESTAO5 VALUES ('697457') INSERT INTO ZQUESTAO5 VALUES ('697623') INSERT INTO ZQUESTAO5 VALUES ('698026') -- Resultado SELECT NUMERO FROM ( SELECT NUMERO, (CAST(SUBSTRING(NUMERO,1,1) AS INT)+ CAST(SUBSTRING(NUMERO,2,1) AS INT)+ CAST(SUBSTRING(NUMERO,3,1) AS INT)+ CAST(SUBSTRING(NUMERO,4,1) AS INT)+ CAST(SUBSTRING(NUMERO,5,1) AS INT)+ CAST(SUBSTRING(NUMERO,6,1) AS INT)) SOMA FROM -- SEQUENCIA DIFERENTE (SELECT NUMERO FROM -- PRIMEIRO E ULTIMO DIGITOS (SELECT NUMERO, SUBSTRING(NUMERO,1,1) PRIMEIRO, SUBSTRING(NUMERO, LEN(NUMERO),1) ULTIMO FROM ZQUESTAO5) PRIULT WHERE PRIULT.PRIMEIRO<>PRIULT.ULTIMO
AND NUMERO NOT LIKE '%'
AND NUMERO NOT LIKE '%11%'
AND NUMERO NOT LIKE '%22%'
AND NUMERO NOT LIKE '%33%'
AND NUMERO NOT LIKE '%44%'
AND NUMERO NOT LIKE '%55%'
AND NUMERO NOT LIKE '%66%'
AND NUMERO NOT LIKE '%77%'
AND NUMERO NOT LIKE '%88%'
AND NUMERO NOT LIKE '%99%') SEQDIF) SOMAPARES
WHERE SOMA%2 = 0