sexta-feira, 24 de outubro de 2014

Lixo desnecessário

Fui à farmácia comprar paracetamol em gotas para meu filho. O líquido vermelho vem protegido dentro de um frasco de plástico e fechado com uma tampa bem forte. Isso está dentro de uma caixa de cartolina e, além disso, a farmácia entrega-me tudo dentro de um saco plástico pequeno.

O saco, por ser pequeno, não serve para muita coisa a não ser carregar o remédio até a minha casa. Quinze minutos depois, ele está no lixo (reciclável, pelo menos). É um desperdício completamente desnecessário.

Quando eu ainda frequentava uma locadora de filmes, sempre recusava as sacolinhas para os DVDs (que, de qualquer sorte, já estavam dentro de capas plásticas bem fortes). E eu devia ser o único cliente, porque as moças do balcão sempre estranhavam (acho que a memória delas não alcançava ao fim-de-semana anterior).

Voltando ainda mais no tempo, quando criança, eu às vezes ia com meus avós comprar pão. Tínhamos uma sacola especial com um exterior rústico (acho que era de corda) e um interior de algodão. Carregávamos o pão dentro da sacola e depois o guardávamos dentro de um porta-pão. Nada ia fora. Hoje em dia, tudo que vem da padaria vem dentro do seu saquinho particular. E essas sacolinhas são um problema quando o pão está ainda quente, porque o vapor condensa e o pão fica molhado; a sacola de algodão não tinha essa característica, porque respirava.

Acho que já não há muita polêmica sobre a necessidade de reduzir o lixo. Então, é melhor começar pelo mais fácil: eliminar essas sacolinhas inúteis. Não há sacrifício em evitá-las e penso que muita gente as usa por hábito apenas.

quinta-feira, 23 de outubro de 2014

Fatorial revisitado IV

Encontrei uma maneira ainda mais simples e rápida e de calcular um fatorial a partir dos primos que o compõem.

Para um fatorial n! é preciso
  1. Calcular, para cada primo p menor que n, a soma (s) das divisões de n pelas potências (q) de p menores que n;
  2. n! é a multiplicação de todos os ps.
Então, para 10!, teremos:
  • 2^(10/2 + 10/4 + 10/8) = 2^(5+2+1)=2^8
  • 3^(10/3 + 10/9) = 3^(3+1) = 3^4
  • 5^(10/5) = 5^2
  • 7^(10/7) = 7^1
Logo, n! = 2^8*3^4*5^2*7 = 3628800.

import java.math.BigInteger;

public class Factorial {

  public static BigInteger f(int n) {
    int m=n+1;
    int[] s=new int[m];
    for(int i=2; i<=m/2; i++) {
      if(s[i]!=-1) {
        //Marcar todos os múltiplos
        for(int p=i+i; p<m; p+=i) {
          s[p]=-1;
        }
        //Calcular soma de expoentes até a maior potência anterior a n
        for(int q=i; q<=n; q=q*i) {
          s[i]+=n/q;
        }
      }
    }
    BigInteger f=BigInteger.ONE;
    for(int k=2; k<m; k++) {
      int pk=s[k];
      if(pk>=0) {
        if(k>2) {
          System.out.print("*");
        }
        if(pk<2) {
          System.out.print(k);
          f=f.multiply(BigInteger.valueOf(k));
        } else {
          System.out.print(k+"^"+pk);
          f=f.multiply(BigInteger.valueOf(k).pow(pk));
        }
      }
    }
    return f;
  }
    
  public static void main(String... args) {
    for(int i=2; i<20; i++) {
      System.out.printf("%d! = ", i);
      BigInteger f1=f(i);
      System.out.printf(" = %d\n", f1);
    }
  }
 }
Se eu já tivesse uma lista de primos guardada, o código seria ainda mais simples.

quarta-feira, 15 de outubro de 2014

Temporada de caça na política

Há um desenho animado muito antigo no qual o Patolino e o Pernalonga discutem se a temporada de caça é a de coelho ou a de pato. Evidentemente, cada um está tentando salvar a sua pele.

Num dado momento, Pernalonga inverte a situação e declara que a temporada é a de caça de coelho. Patolino prontamente retruca que é de pato.

A mesma tática descobri que funciona com crianças pequenas. Quando estou cansado de correr atrás de um baixinho, viro e corro na outra direção. Invariavelmente, o piá começa a correr atrás de mim.

Nestas eleições, sinto que essa tática está sendo aplicada nos detratores do Bolsa Família. Discutiam-se os méritos do programa e agora luta-se pela paternidade. Quem queria votar em azul, porque o vermelho fazia uso eleitoral do programa, agora reclama para o azul a autoria.

O eleitor vai decidir em quem atirar.

sexta-feira, 10 de outubro de 2014

Bolsa Família em tempos de eleição

O Brasil já foi o país mais desigual do mundo e ainda hoje supera apenas países pobres da África e das Américas. Por isso, espanta-me a resistência feroz que há contra programas sociais. Em especial, contra o programa de renda mínima Bolsa Família.

Já analisei o custo e o retorno do programa num artigo quando havia muitas críticas a respeito dos gastos sociais da União.

Ultimamente, tenho lido e ouvido muitas críticas em relação ao fato de que não se espera trabalho em troca do benefício.

O programa é de complementação de renda. Então, exigir trabalho em troca já gera conflito com seus objetivos. Se o programa vai tirar tempo das atividades do beneficiado, não estará complementando, mas substituindo.

Os benefícios não são altos. O valor mínimo é de R$77,00 para uma família que tenha renda inferior a R$154,00 per capita. Não é o suficiente para sustentar ninguém e, evidentemente, as pessoas precisam buscar outros meios. O maior benefício pago em 2012 foi de R$1.332,00 para uma família de 19 pessoas (R$70 para cada uma).

As contrapartidas são sensatas: as crianças devem estar na escola; as mulheres dever ter acompanhamento médico; e crianças em risco ou retiradas de trabalho infantil devem participar de Serviços de Convivência e Fortalecimento de Vínculos.

Como o benefício corresponde a cerca de 10% do salário mínimo (atualmente em R$724,00), uma contrapartida em trabalho teria que ocupar dois ou três dias por mês. Para uma pessoa desocupada, não seria um sacrifício extraordinário, mas para alguém que já tenha um trabalho (e filhos), é provável que fosse impraticável.

Ademais, seria preciso criar uma burocracia nacional para gerenciar uma multidão de pessoas que compareceriam uns poucos dias por mês para trabalhar. Certamente, os custos não valeriam a pena e seria mais útil gastar o dinheiro em saúde e educação.

Penso que oferecer o programa para todas as famílias talvez ajude a vencer a resistência. Sim, há cidadãos de classe média (bem vestidos e bem alimentados) que julgam injusto o benefício dado a uma família com renda inferior a R$154,00 per capita. Quantos levariam o boletim dos filhos e os atestados médicos para receber R$77,00 mensais?